Question

Is it possible to use WIX to install side by side versions of the same IIS website. Including the ability to upgrade them individually? I've searched high and low and can't find anything on the internet for this.

Also why is using heat to harvest files automatically with each build such a no no? Having to manually update the file structure in WIX when it's already handled in VS and source control is such a pain if you're adding views, models, controllers a lot during development.

I'd like to be able to publish the site during a TFS build and then harvest the output for the installer.

Is there a better way than WIX to do this? A deployment tool like Octopus or Web Deploy isn't an option though as it needs to be an installer. A paid for option is also out.

Was it helpful?

Solution

Windows Installer supports installing multiple instances via instance transforms. Essentially, you can install the package with new product code upgrade codes, and the different products can be managed individually.

You add an InstanceTransforms element to your package, and add a child Instance element for each custom instance you want to support in addition to the default instance:

<InstanceTransforms Property="INSTANCEID">
    <Instance Id="P1" ProductCode="GUID1" UpgradeCode="GUID2" ProductName="My App P1" />
    <Instance Id="P2" ProductCode="GUID3" UpgradeCode="GUID4" ProductName="My App P2" />
</InstanceTransforms>

This allows you to install up to three copies: the default instance, plus instances P1 and P2. To install each, use one of these commands:

msiexec /i MyApp.msi
msiexec /i MyApp.msi MSINEWINSTANCE=1 TRANSFORMS=":P1"
msiexec /i MyApp.msi MSINEWINSTANCE=1 TRANSFORMS=":P2"

Then on your non-file components, add the Component/@MultiInstance="yes" attribute. This will create a new component guid for each transform, so you can install multiple copies of the component (one for each transform).

This blog post "Revisited: Multiple Instance installations and patches" describes using the InstanceTransforms element and the Component/@MultiInstance attribute in more detail.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top