4
votes

I have a main application and three tools. all are built upon the same gui framework. Every tool essentially exists of the gui framework, a core runtime and a wrapping application. Each has a standalone WiX installer MSI (with binaries, program data and registry entires).

The main application itself includes all three tools as plugins. In order to find them, the tools must either reside inside the main application directory or be installed standalone (and will be found via registry). Only the core runtimes are needed by the main application.

What is the best way to install main application and plugins at once?

  1. Should i create a boostrapper project that bundles the three tool MSIs and a main application MSI?
  2. Or should i build single cumulative MSI that contains all (required) tool files directly?

Ad Bootstrapper

  • showing all four installer UIs sequentially would look very unprofessional
  • creating a custom bootstrapper UI that allows to select all the MSIs features at once seems to be a lot of work (and i can't find any resources about how to actually do that)

Ad single cumulative MSI

  • i think about breaking up the tool .wxs files into more generic .wxi files and reuse them in the main application .wxs (also to keep maintenance effort low)
  • the setup UI would handle all feature selections nicely
  • this would still require a bootstrapper (for .Net and VC redistributables)

I tend towards the latter.

1

1 Answers

1
votes

To me it comes down to are any of these software components shared by multiple products or massively large and hard to come up with servicing (patching/upgrades) stories without breaking them up? If the answer is yes, then micropackage and chain together. If no, I think it just makes it more complicated then it needs to be.

Visual Studio... yes. My application IsWiX, no. WiX itself used to be a single MSI and they broke it into a bunch of MSIs and chained. But IMO they didn't really have a reason to do it other then to show off (dog food) their new bootstrapper technology.