views:

1115

answers:

3

I am developing installer for a Application Suite using WIX, and the structure is follows:
Application Core
    |_ _ Flavor1
    |_ _ Flavor2
    |_ _ Flavor3

Application Core is a product like Visual Studio and, Flavors 1,2,3 are sub products under it.

Here is my problem,
- In Add remove programs should have 4 entries for Application Core, Flavor1, Flavor2 and, Flavor3.
- I should be able to relaunch installer for Add/remove Flavor1, Flavor2 and Flavor3.

+2  A: 

Usually this is accomplished by installing one product, so one entry in Add/Remove Programs, that you can modify (select the product, click the modify button). That then takes you to the feature tree where you can add or remove features.

If separate entries is a hard requirement, you should create multiple MSIs. But then you can uninstall "Application Core" in your example, keeping the others installed, thus causing problems with the Flavors

Sander Rijken
+2  A: 

These should be features, not separate products. Take the Microsoft Office suite for example, if you install the suite then you have only one entry in Add/Remove Programs and Word, Excel, Powerpoint, etc are all just 'features' off Microsoft Office and you update them that way.

However you can purchase some of these applications separately with their own installers and in these cases the "Application Core" as you put it is included with each installer, using shared components so that files don't need to be installed twice and each application can be installed/uninstalled independently of each other.

Here's a little excerpt from the Windows Installer documentation on Components and Features (you may also like to read Organizing Applications into Components)

Two components that share the same component ID are treated as multiple instances of the same component regardless of their actual content. Only a single instance of any component is installed on a user's computer. Several features or applications may therefore share some components.

sascha
A: 

It does sound like you want features, so Sander gets my +1.

But sometimes you may want different installs of the same product, e.g. a training and test version installed on the same server. In those cases you need to find a different approach, here's one I came up with (see answer Create Live, ...). Take note of the edit about creating a component per file and wildcarding the guid, since this simplifies the process, i.e. no BeforeBuild/AfterBuild tricks required.

Si

related questions