2

I have a bootstrapper application with several msi packages in the chain. For convenience, the msi packages always perform a major upgrade that completely removes a product before the new version is installed.

When a rollback is necessary during an upgrade operation in the middle of the bundle's chain, the previously performed major upgrades are reverted resulting in the affected products not being installed any more.

This seems reasonable but is probably not what the end user expects. Instead of some products being left uninstalled, those products should be ideally reverted to their previously installed versions.

I wonder if their is a way to solve this requirement without giving up the major upgrade strategy. Can a WiX bootstrapper rollback major upgrades in a way the end user expects?

CodeFox
  • 3,321
  • 1
  • 29
  • 41
  • As a workaround for the end user I have successfully tested **repairing the bundle** and **System Restore**. – CodeFox Aug 18 '14 at 15:21
  • An MSI rollback should restore the previous version if RemoveExistingProducts is inside the transaction, InstallInitialize to InstallFinalize, the REP will rollback and restore the original product. WiX - does RollbackBoundary help? – PhilDW Aug 18 '14 at 23:44
  • @PhilDW, you are right - `RemoveExistingProducts` was scheduled after `InstallValidate` and `InstallInitialize`. After changing this, rollback for the package currently being installed works as expected. Thank you for this hint! Unfortunately previously upgraded packages are still removed. According to the [documentation of RollbackBoundary](http://wixtoolset.org/documentation/manual/v3/xsd/wix/rollbackboundary.html), this element will not help in restoring the previous state of all packages. :-( – CodeFox Aug 19 '14 at 07:18
  • 1
    If a partial bundle upgrade is viable, consider [Chain/@DisableRollback="yes"](http://wixtoolset.org/documentation/manual/v3/xsd/wix/chain.html). – Tom Blodget Nov 09 '14 at 00:33
  • I'm having the same issue, can someone elaborate this in an answer? – Peter van Kekem Aug 23 '17 at 15:46

1 Answers1

1

I had the same question and opened a support ticket with FireGiant. Their response was:

Unfortunately, Burn doesn't do that today. Bundles only carry "their" packages, not older ones. And bundle version N could upgrade version N-1 or N-10 so it wouldn't be feasible to repair one package. Instead, the current best advice is to tell the user to run repair on the already-installed bundle. There's an open feature request to have an option to tell Burn to do that automatically but it hasn't been implemented.

Jeff Paquette
  • 7,089
  • 2
  • 31
  • 40