Alex Rivera | Logout

How do I make a WIX MSI always remove a previous version?

Asked 2012-07-31T02:29:40.057
29

I have CI build system builds an MSI whenever a developer checks in a change. We run automated acceptance tests on the installed MSI.

Basically every MSI is a complete install of the product, so we don't have any versioning (ala Windows installer) per se..

Each MSI has the same product GUID and upgrade GUID, and the same version number. but has a different package GUID (use '*' in wix).

What I want to achieve is that when the installer runs, it will 'uninstall' any previously installed version of the product, and install the new one.. all from a single MSI (We have a convoluted install process that is out of our control.. citrix and sccm, so we want to give them a simple install path)

I have tried:

<Property Id='PREVIOUSVERSIONSINSTALLED' Secure='yes' />
<Upgrade Id='$UPGRADE_GUID'>  
  <UpgradeVersion Minimum='1.0.0.0'
                  Maximum='99.0.0.0'
                  Property='PREVIOUSVERSIONSINSTALLED'
                  IncludeMinimum='yes'
                  IncludeMaximum='no' />
</Upgrade>

and have:

<InstallExecuteSequence>
  <RemoveExistingProducts After='InstallFinalize' />
</InstallExecuteSequence>

and have tried:

<InstallExecuteSequence>
  <RemoveExistingProducts After='InstallInitialize' />
</InstallExecuteSequence>

But when I try to install an msi from a subsequent build I get:

Another version of this product is already installed. Installation of this version cannot continue. 
To configure or remove the existing version of this product, use Add/Remove Programs on the Control Panel. 

Which is not really what I was going for..

I understand that I can just update the Version attribute in the product tag, but that becomes difficult to manage. Firstly I can produce 20+ msi builds a day as I have a number of build pipeli

Edit
Report

1 Answer

6

try

<InstallExecuteSequence>
  <RemoveExistingProducts After='InstallFinalize' />
</InstallExecuteSequence>

This should remove any existing products after the install is finalised though you could customize the point at which you do it

see http://mohundro.com/blog/2009/02/23/getting-started-with-wix-and-major-upgrades/

also see the accepted answer for this question

answered 2012-07-31T03:42:18.183

Your Answer