views:

591

answers:

4

Much searching has lead me to find several descriptions of how to create a bootstrapping msi, but these solutions all assume the msi is local or a standard Windows component. Is there a way to make an msi that downloads an installer (which is also an msi) with normal MSI or Wix code rather than by having the bootstrapper execute some non-native program to do so?

+1  A: 

My experience with msi's has been it's not possible to run 2 at the same time. (could be wrong though)

What I ended up doing was to instead make an installer exe using Inno Setup (http://www.jrsoftware.org) and ISTool (http://www.istool.org) which downloads and installs the various msi's. With ISTool it's very easy to do.

I know it's not as chic or sexy as Wix, but it worked for me very well.

yes, nested MSIs are pretty much impossible to pull off. MS claims nested installs or possible but it is hard to configure and can cause different behavior for custom actions.
mjmarsh
Yeah, using an Inno Setup launcher is probably what I'll end up doing, especially since I already have one. Was so much simpler just making the setup file using Inno Setup/ISTool :/
Brian
+1  A: 

I would create a custom action that runs in the InstallUISequence. This would download the MSI if necessary (to the source folder), and then try to launch it as a nested installation.

Martin v. Löwis
A: 

Windows prevents two installs from being in the InstallExecuteSequence at the same time, so if you're looking for a silent install solution with a bootstrapper, you're SOL.

However you can start another install from the UI sequence, which is probably an OK solution as long as you advise your customers that certain other dependencies must be installed first if they're going to deploy via group policy or some other 'silent' method.

If it helps, I'm pretty sure you can also call MSIEXEC with a URL, eg. msiexec.exe /i http://some.domain/blah.msi /passive

sascha
A: 

I would suggest that you write a native app and have it run the first msi and then run the seccons msi. I wrote a blog on how to do this. Here is a link (http://blog.foldertrack.com/?p=45)

Nick