views:

49

answers:

2

I'm trying to create patches using the method from this tutorial. An issue I'm running into is that I can't install a new patch on top of a previous patch.

I can full install Version A,then patch to Version B. After that I can't patch to Version C. I can full install Version B, then patch to Version C.

Currently we just do full installs with major updates each time which is working fine, but because of the frequency of our (internal) updates the file size and update time is becoming a burden so we're looking to reduce the update time (both downloading and installing) especially when most of the files don't change.

Edit: Another requirement is that at any given time a full install can be done instead of a patch. The solution I came up with setting a static product code made full installs on top (without manually uninstalling) doesn't work.

A: 

Looks like the issue was that I was previously making all upgrades major upgrades, but that's not supported with patching. Changing to a static product code rather than auto-generate fixed it.

Edit: Looks like it solved the first problem of Install A Patch B Patch C not working, but now trying to do a full install of D on top doesn't work.

Davy8
+1  A: 

If you're not doing a major upgrade, but you are changing versions, you're doing a minor upgrade. To be able to install the next version .msi file over an existing installed previous version, you're going to have to set REINSTALL to a list of modified features somewhere (or to ALL if you're lazy and willing to put up with Windows Installer doing extra work). Often setting REINSTALL handled by the bootstrap, but it is possible to set it in the .msi and reset it to empty ({})when the previous versions are not installed (condition Not Installed).

Michael Urman
So you're thinking something like `<Property Id="REINSTALL" Value="VAMUS">Installed</Property>` inside the WiX file itself would work?
Davy8
err well `REINSTALLMODE` I guess and `REINSTALL=True`
Davy8
Close. I'd never suggest the `a` of `vamus` over the `o` of `vomus` for `REINSTALLMODE`, and `REINSTALL` is supposed to contain a comma-delimited list of features to be reinstalled, or ALL. And you still need the custom action to clear it when it's running as a first-time install (unless you want that to just error out).
Michael Urman

related questions