Comparing WIX and NSIS Installers
12 03 2007I have to admit I wasn’t really sold on WIX right from the start. But the developers who were in charge of creating our installers thought it sounded like the bees knees. What they found out a little too late is that, like a lot of things from Microsoft, it’s easy to do the 80% that most people need, but you better pray you don’t need the other 20% because trying to extend WIX adds crazy levels of complexity to your installer and build scripts.
What, you want to write a custom action in C#?
It took 2 developers and months of full-time development to create a set of installers with what should have been relatively simple UI and logic customizations. Nobody was happy with the outcome. The WIX builds simply had too many moving parts, causing frequent breakage, and bringing new team members up to speed on the complex build process was a hassle. After about a year of using the old installers, the pain got to be too much and we decided to look for a new solution. Another developer implemented the same custom logic and UIs as in the old installers (plus some additional stuff) by himself in 2-3 weeks using NSIS. And the resulting installer scripts were much simpler.
So what does NSIS have going for it, over WIX, in my opinion?
- Well, to start with, it doesn’t use XML for its syntax. On the surface, NSIS might appear to have a steeper learning curve because it uses its own scripting language. But it really isn’t very complicated(*), and you can get a basic installer working in minutes.
- It’s a very mature installer platform that has been around for years.
- NSIS is used by countless projects, including some very big names, and has a massive community built around it.
- The installer UI is very easy to customize (much more so than WIX, and without the weird compiler errors if a UI element is one pixel off), and there is even a UI designer plugin for Eclipse.
So if you’re looking for a robust installer framework for your project that won’t break the bank, check out NSIS.
(*) This isn’t to say NSIS syntax isn’t without its quirks. The lack of variable scoping and the need to push and pop function parameters using the stack, for example, might scare some people away. However both issues are fairly simple to deal with using macros and a little creative naming.






i know this is a little late, but i really think you may of missed the boat on this post.
I understand your frustrations with WiX its sits over a very complex installation suite. (Windows Installer). I also understand NSIS essentially makes development life easier but it certain doesnt add anything to management.
Windows Installer is however a complex installation suite which maintains so many more advantages over something like NSIS. You can benefits such as
1) true transactional installation
2) self repair
3) application sociability
4) user impersonation
5) managed installation
6) rollback
7) upgrade
8 ) custom action extensibility
9) open installation framework
10) enterprise deployment
the list goes on and on, none of which NSIS supports.
NSIS is great do deploy a single application
Windows Installer is designed to manage an entire installation framework for an infinate number of applications on an indefinate number of platforms. It caters for locked down user deployment, designed to work with most deployment technologies such as SMS, Altiris, Managesoft to name but a few.
You made the right choice with windows installer, i think if you find the right person to train your team you will find it considerably more useable.
WiX is simply a declarative language to generate Windows Installer apps and I personally think it does a great job of doing that. Its no simple tasks to manage such a complex framework.
I hope you have sorted out your issues and not turned to the dark side.