创建修补程序包

要创建修补程序包,开发人员可生成补丁创建文件并使用 Msimsp.exe 调用 PatchWiz.DLL 中的 UICreatePatchPackageEx 函数。 Windows Installer SDK 中提供了 Msimsp.exe 和 Patchwiz.dll。 有关详细信息,请参阅小型更新修补示例

由于将修补程序应用于 Windows Installer 包会导致使用新的 .MSI 文件安装原始源代码,因此新的 .MSI 文件必须与原始源代码的布局保持兼容。

创作修补程序包时,必须使用未压缩的安装映像来创建修补程序,例如,管理映像或 CD-ROM 中的未压缩安装映像。 还必须遵守以下限制:

  • 不要将文件从一个文件夹移到另一个文件夹。

  • 不要将文件从一个文件柜移到另一个文件柜。

  • 请勿更改文件柜中文件的顺序。

  • 请勿更改现有文件的序列号。 序号是在 File 表的 SEQUENCE 列中指定的值。

  • 修补程序添加的任何新文件都必须放置在现有文件序列的末尾。 升级后的映像中任何新文件的序列号必须大于目标映像中现有文件的最大序列号。

  • 不要更改 File 表中的原始 .msi 文件与新 .msi 文件版本之间的主键。

    注意

    该文件在目标映像和已更新映像的 File 表中必须具有相同的键。 两个表的 File 列中的字符串值必须相同,包括大小写。

     

  • 不要使用仅大小写不同的 File 表键来创作包,例如,避免使用下面的表示例。

    文件 Component_ FileName
    readme.txt Comp1 readme.txt
    ReadMe.txt Comp2 readme.txt

     

    当 COMP1 和 COMP2 安装在不同的目录中时,Windows Installer 可以允许使用前面的表示例,但是你不能使用 Msimsp.exePatchwiz.dll 为包生成修补程序。 Msimsp.exe 和 Patchwiz.dll 调用 Makecab.exe,后者不区分大小写,因此失败。

    在设置中使用合并模块时,请确保文件序列号和布局符合上述准则。