One of the big features new to Windows Installer 4.5 and InstallShield 2009 is the ability to chain MSI files. If you’re not familiar with the concept, MSI chaining is the ability for your installation to seamlessly install other installation packages without resorting to special case merge modules or other trickery.
Say your application needs to install SQL Express 2005. Set SQL Express up as a chained MSI and it will be seamlessly installed when your app is installed.
Now, at least some of this was possible under older versions of Windows Installer, but it wasn’t particularly pretty, or seamless.
However, start playing with it and the shine quickly wears off to reveal that, as usual, it’s a half-implemented feature.
The biggest problem I’ve run into so far? VSTO3.0.
Microsoft released VSTO 3.0 as a single SETUP.EXE. You can’t chain a SETUP.EXE though.
But, you CAN start the VSTO 3.0 installation, wait till it gets to it’s first screen, then grab all the contents of the installation that get dumped to a temp folder on the C: drive. In that bunch of files is the actual MSI that gets installed.
That MSI, you can chain just fine.
Ah, first base.
Try and deploy though and you’ll likely get messages about an interface having to do with SmartTags being missing. Come to find out, that was a big oops in the first release of VSTO 3.0, so Microsoft released VSTO 3.0 SP1. It also is a SETUP.EXE, but, upon extracting it, it actually consists of an MSP file (a PATCH) and not an MSI file.
And you cannot chain a patch file.
Now, normally, patches can be applied to an MSI as a transform to create a new MSI, complete with the patch. But it appears that the VSTO 3.0 SP1 patch wasn’t authored with that in mind, as I could never, even with the help of Accresso support, actually apply the patch to my VSTO 3.0 MSI file.
Strike 3. Game over.
In the end, I had to resort to InstallShield Prerequisites, workable, but not near as clean as chained MSI installations.