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/']
After reading these answers we ended up deciding to use Advanced Installer, it has the advantage of adhering to the MSI standards and also of being quite simple to use.
We have chosen WiX too. Mind you that you will still need to know all about Windows Installer mechanisms. WiX is version control friendly and very transparent

If you need custom actions and would like to write that in a .NET language then go for the CustomActionAttribute approach. You can write setup dialogs using WinForms.

This site is also a very good source [InstallSite.org](http://www.installsite.org/)