About Windows Installer, the .NET Framework, and Visual Studio.
Late last week I checked in a feature for Windows Installer XML’s (WiX) chainer, Burn, that I’m really excited about (ask my colleagues): sticky patching.
This is a feature at the bundle (what we call our composition of packages for Burn) level that supports related bundles of type “Patch” and “Addon”. Whenever you install a new bundle, if there are any of those related bundles already on the machine, they are automatically re-installed (efficiently) at the end of the chain (the sequence of packages in the bundle).
“Patch” and “Addon” related bundles will be called as if they were being installed. By default Burn will not re-installed any packages that are already present, though the bootstrapper application (BA) can override that. Since conditions are reevaluated this also presents a great opportunity to support add-ons with conditional feature packages.
This is complimentary to the functionality we have in place for related bundles already during repair and uninstall actions. “Patch” and “Addon” related bundles are already repair and uninstalled when you repair or uninstall their target bundles – and once I’ve finished integrating package ref-counting, those related bundles will not be installed until the last target bundle is uninstalled.
I wrote a battery of tests for this feature, but – as always – please file any bugs.
I’ll go into more details about how this feature works and how you can take advantage of it in future posts.