We have a project with several applications including web applications, web services, windows services and windows applications. We also have prerequisites like SQL Server Express, .NET 2.0 and others. We don't have much user interaction during the setup but we want to add more intelligence to it.

We are currently using Visual Studio to generate the integrated setup for all this. But we continuously struggle with it to make it work like we want.

We want to change our setup tool into something simpler and flexible enough. 

We are also looking for a better solution for the upgrader, that must run upgrade sql scripts on the deployed system. Maybe this could be integrated with the setup.

We are thinking about using InstallShield, but some say that it brings a lot of complexity. What do you think is the best tool for this job?

Thanks!
['https://Stackoverflow.com/questions/806400', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/44547/']
I have used [Installshield](http://www.acresso.com/products/is/installshield-overview.htm), [NSIS](http://nsis.sourceforge.net/), Visual Studio and [WiX](http://wix.sourceforge.net/). Installshield always produced a bloated installer for me and costs alot. Visual Studio can be limited in some of the things that it can do, but overall it is pretty good. NSIS is definately a nice little install system since I have use it for a few products (one that has been downloaded and installed about 750k times) but when I was using it it did not follow the MSI rules. WiX is great and provides you with alot of functionality as well but is script based but there are GUIs for it now too.

Of course it looks like you have decided to use Advanced Installer. Good luck.
There are three things I don't like about InstallShield:

1. It seems overly complex
2. There is no way (to my knowledge) of generating from the command line, you always have to use the GUI, which is a hindrance for automated builds.
3. It seems to add an excessive amount of overhead.

I've used [NSIS](http://nsis.sourceforge.net/) a fair bit, which is open source. Whereas InstallShield has almost a too high level a view of things, NSIS is almost a too low level. You have to write the code to poke the registry entries in for uninstalling via Add/Remove programs for instance. You will be able to get the job done, and have full control of exactly what it will do, though, and it will package into a very compact single executable.

I have no experience with [InnoSetup](http://www.jrsoftware.org/isinfo.php) or [WiX](http://wix.sourceforge.net/) - either of them may steer a course between the two extremes of InstallShield and NSIS. Both are freely available and worth a look as well.