Well best, that is, in my opinion. These are tools I would readily suggest for creating setups for Windows applications. I don’t have any experience with Inno Setup, but my gut feeling and what I have researched tells me that this is a solid tool. It is actively maintained and developed and has a recent release. As far as Inno Setup is concerned, I fell I owe it to you to create a sample project and post it, so stay tuned for that. So far, I have found that Inno Setup uses a Pascal based scripting language. Given that, I would say that the scripting language for NSIS probably has a steeper learning curve.
I have used Wix and NSIS, but Wix more so than NSIS (or Unicode NSIS). While I have not created complicated UI’s with NSIS, the tool is capable of such. I have done a few thing to test the advanced capabilities of NSIS, such as making API calls to Windows system DLL’s.
Here, Wix means Windows Installer XML. The Wix website builder you hear about is a completely different animal. Wix is not a hold you by your hand kind of tool. Its low level, close to the bare MSI. It does not even have its own dialog editor, although there are commercial and open source ones out there. I have been able to design new dialogs and create new ones just by copying and editing the XML for existing, stock dialogs. Unlike commercial tools such as InstallAnywhere, InstallShield, and the like for creating MSI installs, Wix does not have its own scripting language; I like that. You can code your custom logic any C#, VB .NET, or unmanaged (good old, plain old) C/C++. Now I suppose you could try F# or other .NET languages, but I would not recommend unmanaged C++ due to its manifest dependency on the C++ runtime.
The cool thing about Wix is that if you understand it, you’ll understand Windows Installer better itself. Wix also integrates well with Visual Studio using the Votive add-in.
Non MSI-Based Setups
These tools generate setups that do not use Windows Installer, or you can think of them as not being MSI based. They have their own scripting languages and are both widely used, especially for open source projects.
Lastest Release: 5.5.2 on 2012-10-08
This product has its own license, the Inno Setup License, which is fairly liberal. It has both Unicde and non-Unicode support and uses a Pascal based scripting language. The source code is available on GitHub.
Latest Release: 2.46.5 on 2012-05-1-0
This is a continuation of NSIS and is licensed under LGPL, GNU Lesser General Public License. The scripting language is the same as NSIS. If you’re new to NSIS, I recommend this version going forward. The regular version of NSIS is no longer maintained.
Latest Release: 2.46 on 2009-12-06
NSIS is licensed under the zlib/libpng license. The bzip2 compression module is licensed under the bzip2 license and the lzma compression module under the Common Public License version 1.0. This is the installer that was originally used for WINAMP. After version 5.53 WINAMP is now using Unicode NSIS. There is no Unicode support for this version of NSIS. The scripting language is NSIS script.