views:

355

answers:

2

On this MSDN page it is stated that nested installations (also called concurrent installations) on Windows Installer are deprecated. I'm currently installing a third-party msi with custon action type 23.

With what mechanisms can I install a third-party msi without using nested installations? I tried using a custom action of type 34 calling "msiexec.exe /i {.msi-file}" but that fails since multiple installations are not allowed at the same time.

Unfortunately there are no merge modules available for the msi's to be installed.

A: 

What happens if you use Custom Actions (Installshield has those) to execute your installations? And/or instead of .msi create .exe files?

Riho
I'm already using custom action type 23 to do the nested install. When I switch over to use type 34 and try starting msiexec.exe with parameter /i, it fails as described above.The third-party msi cannot be recreated and must be used as-is, so I can't try that out.
vividos
+1  A: 

Unfortunately for you (and for everyone else in this situation), you're going to have to create a bootstrap application that checks for the prerequisites and launches their installers where necessary and then launches your installer.

It's doubly unfortunate if your prerequisite needs are dependent on only certain features, rather than the whole package, as it means that you'll have to implement the user interface in the bootstrap application as well. (That was the case with us, but fortunately, we were starting from scratch anyway, so we didn't have to recreate a user interface that we'd already implemented in the MSI. We actually tried a hybrid approach where the first few screens of the UI were in the bootstrap app and the rest were in the MSI, but there were too many frustrations involved, so we gave up on that idea in short order.) With the UI in the bootstrap app, the user would select the features that they want installed, and then the bootstrap app would, if necessary, present a page that says the prerequisites are being installed and install them at that point before going on to the next page. When launching your installer, the bootstrap app feeds it all of the info that was gathered from the UI via command line arguments. You may even wish to put launch conditions into your MSI to prevent it from being run directly except in uninstall or repair situations.

RobH

related questions