views:

69

answers:

2

Hello,

I've got a WiX project that includes the installation of Visual C++ 2008 runtime components for x86 with a separated merge module.

Unfortunately there's a well known issue with that .msm with MSI v4.5. To be more specific the .msm custom action SxSUninstallCA takes 20 minutes to complete on uninstall.

So, long story short, I decided to remove the .msm from the new version of the product, installing VC++ components with the .exe file, silently.

If I change only this thing (and the ProductCode, of course) the installer doesn't detect the already installed product on the machine and performs a normal installation, without uninstalling the older version first.

Any idea on what's going on here? Should MSI check for UpgradeCode and ProductCode to detect if a product is an upgrade of another one already installed on the system?

A: 

If you want the new MSI to upgrade the old MSI (and you need to use a Major Upgrade because you are removing Components) then, yes, you need to use the UpgradeCode and Upgrade elements (or in WiX v3.5 you can use the new MajorUpgrade element).

If you provide more details about what is in your .wxs files, I can be more specific.

Rob Mensching
My comment was too long, I added it as an answer below. Thanks for your help in advance.
Paolo
A: 

The project is set up to use UpgradeCode and ProductCode to detect an upgrade already. For example: I build a .msi with:

ProductCode="05406C5C-8D66-4779-AECA-A93B18729ED5"
UpgradeCode="05B87404-548E-4BEA-9621-FBF9459F25B0"
PackageCode="*"
Version="1.1.1"

This .msi contains files and folders to be installed, as well as Microsoft_VC90_CRT_x86.msm merge module.

Then I build up another .msi with the following parameters

ProductCode="7F626A0C-5E69-496D-999E-8E2B14C01FE6"
UpgradeCode="05B87404-548E-4BEA-9621-FBF9459F25B0"
PackageCode="*"
Version="1.1.2"

Same files, merge module still included: it works, the application gets updated (uninstalled the previous version, installed the new version). The moment I comment every single reference to Microsoft_VC90_CRT_x86.msm, the built installer doesn't detect the previous version of the application.

Paolo
Edit your question to add this information and your Upgrade table information. That's another piece of the puzzle. Also, where did you schedule RemoveExistingProducts action?
Rob Mensching