views:

487

answers:

8

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?

+2  A: 

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 ...

MartinStettner
+3  A: 

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".

JasonRShaver
Are there any non-MSI based installers of note? The whole concept of MSI installers just doesn't make sense to me. Are there any other notable/viable installer concepts for Windows?
BobTheBuilder
Whether you like MSIs or not, this is what Microsoft uses, what Visual Studio builds, and what the Add/Remove control panel lists. You can make an EXE-based installer, but you are giving up a lot that MSIs provide and will have to do a lot more work.
Dour High Arch
The only non-MSI "of note" is NSIS. Generally used by programmers who are have given up trying to answer the question you're asking ;)
sascha
Aye, NSIS is great for simple installs, but it REALLY lacks in the long run. Same thing with the VS2005 and 2008 "build projects" method. WiX is the best method I have found (and free), but InstallShield/Wise is the easiest/fastest.
JasonRShaver
You can also make EXE installers with MSIs by using a setup.exe bootstrapper. Sure it requires two files, but it is worth it. You can also pack the MSI into the bootstrapper EXE.
JasonRShaver
+2  A: 
Dour High Arch
+1  A: 

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.

Jim Barnett
Most of the issues I've had haven't been with basic installations, most of them are fairly easy to use for basic stuff. It's when you need to do anything outside of basic - i.e. add custom forms and functionality that it becomes completely unintelligible.
BobTheBuilder
A: 

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

stukelly
I would tend to recommend against looking at NSIS source code to learn installing (on windows), it really does not relate to to what all the other methods used. As for Inno, never got around to that one.
JasonRShaver
+8  A: 

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 :)

sascha
If this is all too much I'd personally recommend InnoSetup instead (also free); it's got a similar feature set with a less quirky language.
romkyns
Unfortunately you're going to need to take the Windows Installer route if you're writing business software - most Corporate customers won't even consider purchasing unless you can provide them with an MSI for deployment.
sascha
A: 

Great question. I've created a blog article to address this:

http://blog.deploymentengineering.com/2010/07/back-to-basics-i.html

Christopher Painter