views:

645

answers:

3

Hi,

Our product has several products that customer can install created as separate installation packages (MSI).

We have a requirement to have single package for the installation that will:

  1. Show one UI with progress
  2. Allow user to choose which features/packages to install
  3. Have ability to constrain one feature to another (e.g removing or adding effect other)
  4. Support single elevation (UAC)
  5. nice to have ability to auto update (not must)
  6. support command line + silent installation
  7. the package should be built out of the isolated installations (chain them)
  8. raise error / messages for missing prerequisites
  9. Support patches over time and major upgrades

Today we do almost all of the above using MSI with nested installations which is bad practice and we face too many issues in our solution.

i know that there are several bootstrappers out there (m$ generic bootstrapper which i think is not good, BURN is the WIX version which is not mature enough)

Do you know of other? that work and tested already ? What is the best method to do (without unification of the MSI into a single MSI)

+1  A: 

Until Wix's Burn is ready we really don't have much of a choice when it comes to bootstrappers.

If you are using InstallShield as your msi designer, one thing you could try is making an InstallScript project that contains all the different msi packages. You could then silently install only the desired packages. InstallShield is pretty expensive though, so if you don't already have it, you'll probably have to end up rolling your own bootstrapper.

Douglas M.
+2  A: 

Create an InstallShield InstallScript package. Use the InstallScript package kick off the .MSIs with "-qn" one by one. I do this and am successful with it. I believe it meets your all the requirements you listed.

William Leara
+3  A: 

dotNetInstaller looks promising. I was experimenting with it to install java as a prerequisite. It comes with a GUI editor so you don't have to sort out the xml to create a project. The config file is in xml, and the InstallerLinker can be run from the command line. It could be integrated with a build server, though some msbuild tasks would be nice.

project home:
http://dotnetinstaller.codeplex.com/

tutorial:
http://www.codeproject.com/KB/install/dotNetInstaller.aspx

mcdon