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.
Since you mention Visual Studio and .net, I'm assuming you are deploying to Windows based servers, but even still you might want to take a look at [fabric](http://www.nongnu.org/fab/). It is a python based deployment tool. You can write and launch scripts to deploy and setup your servers, web services, etc.. The only thing is I'm not sure how well it plays with Windows as the target server.