To generate a patch package, it is recommended that you use a patch creation tool such as Msimsp.exe and Patchwiz.dll. Patchwiz.dll version 4.0 is compatible with packages and patches that were authored using earlier versions of the Patchwiz.dll. The Patchwiz.dll tool is only available in the Windows SDK Components for Windows Installer Developers.
Patchwiz.dll version 4.0 has one new function, UiCreatePatchPackageEx (Patchwiz.dll), that extends the functionality of UiCreatePatchPackage (Patchwiz.dll). These functions take a patch creation properties file (.pcp file) and generate an installer Patch Package.
The .pcp file is a binary database file with the same format as a Windows Installer database (.msi file), but with a different database schema. Therefore a .pcp file can be authored by using the same tools used for an installer database.
You can create a .pcp file by using a table editor such as Orca.exe to enter information into the blank .pcp database provided with the Windows Installer SDK, Template.pcp. For more information, see A Small Update Patching Example.
The following database tables are required in every .pcp file:
- Properties Table (Patchwiz.dll)
- ImageFamilies Table (Patchwiz.dll)
- UpgradedImages Table (Patchwiz.dll)
- TargetImages Table (Patchwiz.dll)
The following database tables are optional:
- UpgradedFiles_OptionalData Table (Patchwiz.dll)
- FamilyFileRanges Table (Patchwiz.dll)
- TargetFiles_OptionalData Table (Patchwiz.dll)
- ExternalFiles Table (Patchwiz.dll)
- UpgradedFilesToIgnore Table (Patchwiz.dll)
The following table is required in .pcp files that have a MinimumRequiredMsiVersion equal to 300 in the Properties table.
The table is optional if MinimumRequiredMsiVersion is not equal to 300.
The version of Patchwiz.dll released with Windows Installer 3.0 can automatically generate patch sequencing information and add it to the MsiPatchSequence Table of a new patch. The PatchSequence Table can be used to manually add patch sequencing information the MsiPatchSequence Table. For more information, see Generating Patch Sequence Information.
Beginning with Patchwiz.dll version 2.0, you can increase the speed of subsequent patch creation by using Patch Information Caching (Patchwiz.dll).
Using public symbols for your target and upgrade image binaries can reduce binary patch sizes by approximately one half. For more information, see Using Symbols to Reduce Binary Patch Size.
You can specify that certain regions of the target file be preserved from being overwritten during patching and that the information in those regions be retained. For more information, see Patching Selected Regions of a File.