Do not do ping backs without notifying and getting consent from the user. As most run a firewall or use a network with one which will more then likely block the request and data should not be sent to you without the user manual opt-in.

In terms of maintaining control over your software, it is not possible once you release it to the world. Most companies use a license key they generate on their server that works with the compiled version of the software the user downloads. As you will also need to support offline activations, just like Microsoft and other big companies do. You may also want to use a license file that the user can download. I would also recommend against having software stop working unless you insure the user knows up front that it is subscription based and has an explicit expiration date when they launch the program.

In terms of tracking registrations, I normally will allow the user to register the software on launch and if they do not want to, I have the option in a help menu but do not make it a requirement as some people need to work offline, and requiring an internet connection would cause some serious issues.

Obfuscation only deters the regular joe, the top of their game types can get what they are looking for very quickly so do not waste too much time and effort into code obfuscation. If you do want to many companies use Themida to handle their licensing and IP protection needs.

I normally use my own servers to host and distribute update code behind Akamai services so there is no direct connections back to my systems from non Akamai systems. This insure the servers are always available and I can scale easier and cheaper. In terms of updates I will ask the end user if they would like to automatically check for updates along with a preferred time interval. If they agree I will check for updates in the background matching their preference. If they select no, then I do not check for updates and will normally have a nice message appear 30 days later informing them there has not been a check for updates in 30 days with the option to never show the message again or check for updates.

I would stay away from cheapest way to get a certificate as those can be aligned with companies that do not follow the proper procedures at all times for being a certificate authority. Go with the trusted brand that shows up on most of the software you use and have a backup plan in case the CA gets revoked.

For errors, when one occurs I ask the user if they want to send the error message and logs to the developer. If they do not then I do not collect them, if they do then I will normally upload it the system and have them authenticate to validate the error/crash report. This allows them to see all of their reports and view the status of them.

I do not protect the sqlite databases in any way as if it is on their machine they should be able to read it. It really helps if there was an application issue and they are required to make manual updates in rare occasions.

For minimizing the support efforts I make highly detailed downloadable PDFs, CHM kits videos and customer FAQ pages. If they submit even the smallest how do I do ABC, I write a tutorial on how to do it, as if they asked someone else will do the same eventually. I also spend an extremely large amount of time on UI/UX to insure that it is dead simple to use. This also includes heavy automated GUI and CLI testing of the application, including how it acts on high/low end high/low bandwidth systems and different operating systems.

My biggest tip would be to make it dead easy for the end user to use your app, do not overly nag them, ask for permission before making any system changes or sending out or receiving any data. Also never send them promotional emails or mail unless they opt-in to receive them. One last thing, treat the user like someone you are trying to befriend face to face and treat them with respect and you will gain their loyalty and they will normally help you dramatically with word of mouth advertising without you having to ask them to do it.