Comparison of PatchWiz and WiX v3 Patch Build



The Windows Installer SDK ships a library named patchwiz.dll. This contains the logic to build a patch from pairs of database packages (.msi files, or simply MSIs) along with other configuration properties. Another tool that the SDK ships is msimsp.exe which uses patchwiz.dll and parses command line options. These tools consume an input file with the same format as a database package but with a different set of tables. This is known as a PCP file (because of the .pcp extension).

When we started planning a patch build system for Windows Installer XML (WiX), we considered building a new system that is completely under our control but without using any undocumented APIs or formats. The result was the WiX patch build system that first shipped in version 3.0 and is used by many divisions and other groups throughout Microsoft.

Even while WiX v3 retains the ability to build PCP files for use with patchwiz.dll, it provides new support using the <Patch> element a two tools: torch.exe and pyro.exe, which builds transforms and patches respectively. This gives us the ability to add validation for common problems and the ability to easily filter most changes, though you need to fragment your authoring properly.

The following table is a comparison of patchwiz.dll and the WiX patch build system.

Ignore certain files to be upgraded by the patch.YesYes
Ignore certain other resource types to be upgraded by the patch (ex: registry values, components, etc.). Yes
Produces binary delta patches.YesYes
Creates patches between MSIs.YesYes
Maintains relationships between groups of authored resources (ex: files and registry values in the same fragment). Yes
Supports authoring of validation flags.YesYes
Supports authoring of error flags. Yes
Consumes tertiary MSIs to include additional data in the patch transform.Yes 
Produces easily parsable output for diagnosing authoring issues. Yes
Can automatically extract compressed files when creating transforms. Yes

What’s more, if you’re already building with WiX 3.0 or newer, you already have these tools.

Heath Stewart

Senior Software Engineer

Follow Heath   

No Comments.