While Christophers are responding, this is awesome, as he offers the wix bootloader, I would discourage the route for major updates for a high-drain package. The problem is that after you have made your boot patch that internally performs a major upgrade of your volatile libs in HighChurn.msi from version v1.0 to v1.1, the bootloader will not, as far as I know, reinstall the previous HighChurn package. msi in version 1.0.
There is another way: you can, of course, create patches intended for the release of the main package. Given what you wrote, I'm not quite sure, but if your patch 1.2 can only be applied to 1.1, then you probably changed your 1.2 to 1.1 only, not 1.0.
Here's a neat guide to creating patches: https://www.firegiant.com/wix/tutorial/upgrades-and-modularization/patchwork/
Follow this guide, replace the fixes ([PatchFamily / @ Supersede], it will invalidate everything sent v1.1 v1.2, so you basically have to do v1.2 patch v1.0, not v1.1) and add this flag in the patch element to configure the main release, even if higher versions are present: Patch / @ MinorUpdateTargetRTM = "yes" . Always disconnect patches from the release installer (HighChurn.msi v1.0), never use the installer that you used for the patch (HighChurn.msi v1.1).
Of course, there are situations where you may need a specific update installed for patches: a well-planned package scheme for packpack / servicepack, for example, where patch 1.1.1 requires service pack 1.1 installed on top of version 1.0.
Last word for fixing your volatile data (I assume these are libraries with versions here). Perhaps you should take a look at which libraries you could replace in the patch. Then you can create patches with very little data, only providing the changed libraries with a higher version. If you increase the version in all your libraries, all libraries will be fixed, which will lead to large patches. This may require a slightly more complex build workflow (God knows this was for us).
Jakob ziegler
source share