生成修补程序序列信息 (PATCHWIZ.DLL)

与 Windows Installer 3.0 一起发布的 PATCHWIZ.DLL 版本可以自动生成修补程序排序信息并向 MsiPatchSequence 表中添加一个新修补程序。

在 .pcp 文件的 Properties 表中,将 SEQUENCE_DATA_GENERATION_DISABLED 属性设置为 1(一),以防止自动生成修补程序排序信息。 如果此属性不存在,则自动生成信息并添加。

使用 Windows Installer 3.0 发布的 PATCHWIZ.DLL 自动生成修补程序序列化信息时,将发生以下情况:

  • 对于 TargetImages 表中列出的目标映像的每个产品代码,会在 MsiPatchSequence 表中添加一个新行。

  • 添加到新行中的 PatchFamily 列的值对应于 TargetImages 表中列出的目标映像的目标产品代码。

  • 添加到新行中的 Sequence 列的值是使用修补程序针对的产品最高版本和生成修补程序时的 UTC 时间生成的。 序列号为 <产品次要版本>.<内部版本主编号>.<时间戳 1>.<时间戳 2>。

    • 第一个字段是修补程序针对的最高版本产品的产品版本。
    • 第二个字段是修补程序针对的最高版本的产品的内部版本主要版本。

    这两个时间戳字段用于计算协调世界时 (UTC) 秒所需的 32 位时间戳。

    注意

    产品版本具有以下格式:<产品主版本>.<产品次要版本>.<内部版本主要版本>.<内部版本次要版本>,因版本号为 2.1.0.0 的产品高于版本号为 1.2.0.0 的产品

     

  • msidbPatchSequenceSupersedeEarlier 属性将输入到为服务包 (SP) 或次要升级修补程序生成的新行的 Attribute 列中。 msidbPatchSequenceSupersedeEarlier 属性不会添加到 QFE 或小型更新修补程序。

    注意

    服务包 (SP) 应包含之前发布的所有 QFE 的修补程序。 但是,如果修补程序作者将 .pcp 文件中的 SEQUENCE_DATA_SUPERSEDENCE 属性设置为 0(零)或 1(一),则 MsiPatchSequence 表中所有行的 Attributes 列都将设置为针对 SEQUENCE_DATA_SUPERSEDENCE 指定的值。 需要更多控制权的修补程序作者必须手动创作 Attributes 列。

     

如果在 .pcp 文件中包含 PatchSequence 表,则系统会忽略 SEQUENCE_DATA_GENERATION_DISABLED 属性,并且 PatchSequence 表中提供的信息可以添加到修补程序的 MsiPatchSequence 表中。