I have been evaluating the wide range of installation and web deployment solutions available for Windows applications.  I will just clarify here (without too much detail,  these tools have been covered in other questions) my understanding of the options:
NSIS - Free tool that generates setup executables. Small binary.  Specialized, sometimes obtuse, scripting language.
Inno Setup - Free tools for setup executables.  Various binary compression schemes.  Pascal scripting engine.
WIX - Free toolset to generate MSI binaries.  XML definitions language.
WIX ClickThrough - Additional tools for packaging, web download and auto update detection (now part of WIX core).
InstallShield - Commercial development environment for installation packaging.  Generates MSI binaries. C-like InstallScript language.
Wise - Commercial development environment for installation packaging.  Generates MSI binaries.
ClickOnce - Visual Studio supported framework for publishing applications to a webserver, with automatic detection of updates.  No support for custom installation requirements (INI files, registry etc ...).  Packages setup as an MSI binary.
Install Aware - Commercial development environment for installation.  Generates MSI binaries.  Automatic Update framwork (Web Update).
If I have missed any, please let me know.
And found some useful discussions of these technologies on StackOverflow:
Best Simple Install System
Best choice for Windows installers
Alternatives to ClickOnce
I have worked with a few of these solutions, as well as a handful of proprietary internal installation solutions.  They are mostly concerned with packing installations and providing a framework for developers to access the run time environment.  With the growing requirement for web deployment and automatic software updates, I expected to find more of a consensus among developers on a framework for web delivery of software and subsequent updates, I haven't really found that consensus. There are certainly solutions available (ClickOnce, ClickThrough, InstallShield Update Service), but they each have considerable limitations (please correct me if I mis-represent any of these).  I would be interested in a framework that provided some of the following:
Third party hosting/management of updates.
Access to client environment (INI files, registry, etc..).
User registration/activation.
Feedback/Error reporting
This is leaving me with the strong impression that the best way to approach the web deployment problem is through a custom built proprietary solution (possibly leveraging existing installer packaging).  I have seen this sort of solution work well for a number of successful applications:
FileZilla - HTTP request to update.filezilla-project.org to check for updates, downloads an NSIS binary (I think) and then shuts down to run the install.