For desktop applications:
- OS Requirements: If your software is "installed", then you check operating system in the installer (.msi, for example). For creating installers, you can use WiX, NSIS, InstallShield LE, or for Visual Studio 2010 or lower, a setup & deployment project. In this phase, you also check for .NET version, any required software such as SQL server, any additional third party libraries...etc. There are examples in forums of each different installer creation kit.
- You do not send the file, user "downloads" it from a link in your web site (with a MIME of application/octet-stream for example).
- You do not "get around" firewalls, antivirus definitions and UAC, they are there for a reason. Users should allow your application or installer, and elevates it if necessary. At best, you could create a 'how to install' file or an example tutorial video.
- Location of temporary internet folder should not be a concern of you. If the user downloads it, he/she will choose where to download. If the user selects "Run" from iexplore, it will automatically launched.
- You do not launch the initial install command, users do it. It is the proper way; even if possible, most people will not be comfortable with autoexecuting binaries that can get around any security measure that they have, such as firewalls and antiviruses.
- Installers validate the installation is successful. If you want, you can add a custom action that sends you an email when the installation is successful, but it will be intercepted by a firewall, and may be considered a security threat or leak of private information since users will not not what your program sends away.
New thoughts on verification transmission: There are many different approaches that could be followed to achieve this. For example, as I have written before, you can create a custom action that triggers on a successful installation which sends an email to you. As an alternative, you can create an exe file that does the transmission works, and call that exe within the installer. You can program this such that if the installation fails, it sends the details of the error.
You could send the verification information on the first launch of your app, as well. When the program is executed for the first time, you try to send the success info. If you could, then you update the boolean that holds the state of verification transmission to true. If not, it says false. By this way, if the user is not online during installation or first launch, you try again (as long as the bool is false).
More exotic ways could be uploading a text file that includes the details of the installation to your 24/7 available server or your dropbox/google docs account (or any other cloud service with an API).
You may create a web service of your own and do a kind of registration work automatically behind the scenes as well.
Please note that if the user installs this program to a completely offline computer, there is no possible way of doing it automatically.
In short, once a user downloads the installer, it is his responsibility/authority to allow your application several privileges. You could prepare a document/audio-visual aid, of course.
If you provide more clear details of what you want to do, we may be of more help.
Updated 1-Oct-13 11:37am
v3