I am developing an open source C # application. Some time ago, I used the basic .NET installer, which I myself encoded. However, with a recent change, this is no longer practical for me, since I would have to add a large number of files to the installer - and they can change with each version. A zip file is also not practical.
I checked online, I see a lot of MSI, ClickOnce, Self-extracting ZIPs and the (most promising) NSIS system. None of them seem to fit my needs exactly, so I'm looking for tips on which system to use.
The actual installation of my program is very simple. Basically, I just need to copy the bin \ Release directory (and all the sub-folders) to the client computer. I accomplished this with a few ad-hoc by inserting each file into my .NET installer and maintaining a file table of what is happening.
Unfortunately, I just localized my application. I now have 30 + .resx files (which are compiled in dll and placed in the MORE Visual Studio subdirectory), and it is obviously impractical to add 30+ folders and DLLs to my installer. Therefore, why am I in this search.
There are also several other requirements:
- The installer should look for predefined directories for the specified .exe. (My application is for replacement). If the .exe file is not found, it should request its location
- The installer must ensure that "OldApp.exe.bak" exists. If not, it should rename "OldApp.exe" to "OldApp.exe.bak"
- The installer must update the files. That is, if "Culture.de.dll" has not changed, the installer will leave it alone.
- The installer should work with all versions of Windows of all .NET IDEs (VS, SharpDevelop, Mono, ect), but should not work on other platforms.
- When I create a solution, the installer should automatically recover. In other words, it must be running for the "After Build" section.
- Installer generation must be added to the source code repository. This means that anyone who downloads the source of my application can also compile the installer.
Sorry for the long post, I thought it was better to post more than less.
source share