Is there any definitive documentation on writing software installers?

I've read a bunch of documentation on installers and haven't come across anything good that explains the underlying concepts. Most of the installer software I've come across is based on the same "database" like structure that I just don't understand at all.

All of the documentation that comes with the various products - i.e. WiX, InstallAware, Wise, InstallShield etc expect that you understand these underlying concepts [which I just don't get] in order to follow what they're talking about.

Can anyone point me in the direction of documentation that explains the concepts of software installers so that the software documentation actually makes sense?


Update - since my original post, WiX: A Developers Guide to Windows Installer XML has been released and is also a good resource for beginners. (I didn't find it that great myself though.) I still suggest reading The Definitive Guide to Windows Installer as a starting point. Windows Installer and WiX isn't something you just pick up in a few days, it'll take a few months.

Go pick up a copy of The Definitive Guide to Windows Installer. I've lost count of how many times I've recommended it to people who are getting stuck on the concepts and are struggling to understand how Windows Installer works. Make sure you grab the Windows Installer SDK as well.

Getting to grasp with Windows Installer is the first stage of your learning, once that's sunk in you'll understand how InstallShield works (or doesn't work as the case may be..). Wise, InstallShield, etc try to shield you from the underlying concepts and have their own trickery/hacks to get around the limitations of Windows Installer.

Stage two (if you're serious about understanding Windows Installer) is learning WiX (The WiX Tutorial isn't too bad, although it's a bit out of date and targeted at WiX 2.0 rather than 3.0) and joining the wix-users mailing list. Don't join the users list until you've finished the book mentioned above, you'll be well in over your head. Questions from those who don't understand the Windows Installer concepts largely go ignored, however questions from people who have done their homework will find it a great resource.

What's not covered in the book is Vista, Robert Flamings blog entries on Understanding UAC and Vista (written when Vista was in it's beta stage) are the best information you'll find on the topic.

One thing that both the Windows Installer and WiX teams is really good at is keeping the documentation (Help files) up to date. Whenever I'm working on setups I'll generally have Wix.chm and Msi45.chm open on one monitor ;)

Along with the documentation, blogs from people on the WiX and Windows Installer teams are great for learning new tricks, etc. Far too many to list here, but once you know the terminology you'll find most of them popping up in google results.

If this all seems too much, then check out NSIS. Great for simple "I just need to copy files" type installations, not so great for enterprise deployments. If you're torn between the two then maybe go take a look at Rob Mensching's old blog when setup isn't just xcopy. Articles there are probably what convinced me that diving in and learning the underlying Windows Installer concepts would pay off in the long run. And it has :)

This (MSDN, About Windows Installer) is the best starting place for good 'General' information about installing on windows. All of the installers that are "msi-based" will relate to these concepts.

The only 'other' installer types (in the windows world) is NSIS which is really not for enterprise installations (I don't want to start a debate on procedural vs. non-procedural installers here).

Install stuff is REALLY complex with advanced concepts like advertising, restore points, patches and transforms and the like, but when you 'get it' you can do some pretty cool things, like the work-around to get TFS 2008 using SQL 2008.

TFS 2008 does not support SQL 2008, but TFS 2008 SP1 does, so what you have to do is "patch" the TFS 2008 RTM install with the TFS 2008 SP1 install with a command like this:

msiexec /a C:\TFS\RTM\AT\vs_setup.msi /p C:\TFS\SP1Extract\TFS90sp1-KB949786.msp TARGETDIR=C:\TFS\ATIntegrated

but the result is something that you can no hand out as "TFS 2008 with SP1".

You could try

Windows Installer resources (Starting page for the links below)

Windows Installer (Look at "Overview of Windows Installer")

Windows installer on MSDN (For SDK information)

Hope that helps ...

The best introduction to Windows Installers I've seen is Phil Wilson’s book Definitive Guide to Windows Installer. This was written in 2004 and does not have Vista or Win7-specific features.

The best site I have seen for Windows Installers is It has some introductory articles, but is targeted to experts.

I recommend the following feeds:

If your install needs are not terribly complex, I would suggest trying out InnoSetup. I used it on a suite of windows applications installers a few years ago and had no complaints. Much simpler than InstallShield and MSI, but your mileage may vary.

I am not in any way affiliated with InnoSetup.

A good place to learn how installers work is by looking at the code.

Need Your Help

Adding another variable to PayPal URL query string paypal

I'm just learning.. can anyone please tell me how to add the variable p=1 when setting up this paypal parameter string please. Here is what it is like at the mo which works fine.. I just need to ad...

EntityReference can have no more than one related object linq entity-framework linq-to-entities

I have two identical controller actions and two nearly identical views (one just has a different javscript file with it). One view works just fine, but the other gets hung up on this EF error: