I've seen many questions like this one asked all over the place but I've found none with my particular twist on it that has been answered. I'm using purely wix to build minor upgrades.
This question is an example which is muchlike my scenario, except for the last part.
- I have a product for which I build an RTM msi file, let's call it Product-1.0.msi
- Contains A.dll
- I then build a patch called Product-1.0.1.msp which uses Product-1.0 as it's baseline
- Adds B.dll
- I then build a patch called Product-1.0.2.msp which also uses Product-1.0 as it's baseline
- Adds B.dll + C.dll
This means that my patches will always contain the preceding fixes and supersede each other.
Scenarios:
- 1.0 -> 1.0.1 Works fine
- 1.0 -> 1.0.2 Works fine
- 1.0 -> 1.0.1 -> 1.0.2 Doesn't work
In the last scenario, the msp runs without complaint but very quickly. The reason is obvious afterwards, because nothing is actually done. In ARP, the patch is listed with version 1.0.2 under Installed Updates, but the target product isn't updated, files that were added to the patch (C.dll) aren't added to the install folder. Same goes for updates, files aren't modified by the second patch.
When uninstalling 1.0.2, files that were included in the patch (C.dll) are removed however, including those that were installed already with 1.0.1 (B.dll).
ProductCode is unchanged.
UpgradeCode is unchanged.
Here's the Patch.wxs contents:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Patch MinorUpdateTargetRTM="yes"
AllowRemoval="yes"
Manufacturer="{Manufacturer}"
DisplayName="{ProductName} {Version} Patch"
Description="{ProductName} {Version} Patch"
Classification="Update"
TargetProductName="{ProductName}" >
<Media Id="5000" Cabinet="Patch.cab" EmbedCab="yes">
<PatchBaseline Id="RTM">
<Validate ProductVersionOperator="LesserOrEqual" ProductId="yes" UpgradeCode="yes" ProductVersion="Update" />
</PatchBaseline>
</Media>
<PatchFamilyRef Id="PatchFamily"/>
</Patch>
<Fragment>
<PatchFamily Id='PatchFamily' Version='{Version}' Supersede='yes'>
</PatchFamily>
</Fragment>
</Wix>
In this snippet, {Version} is 1.0.1 in the first patch and 1.0.2 in the second. Otherwise, they're identical.
Any thoughts on this?