MsiPatchSequence 表

MsiPatchSequence 表包含安装程序确定小型更新修补程序相对于所有其他修补程序的应用顺序所需的信息。 该表必须位于修补程序文件的数据库中,而不是位于修补程序的转换中。 安装程序在应用重大升级修补程序时会忽略此表。 应用次要升级修补程序时,安装程序仅使用此表来识别不能排序的已取代修补程序。

MsiPatchSequence 表包含以下列。

类型 密钥 Nullable
PatchFamily Identifier Y N
ProductCode GUID Y Y
序列 Version N N
特性 整数 N Y

 

PatchFamily

指定修补程序是此字段中命名的修补程序系列的成员。 针对同一产品版本的同一修补程序系列中的修补程序将按 Sequence 列中的值排序。 修补程序系列中的修补程序按递增顺序应用于目标产品。 PatchFamily 还用于确定哪些修补程序将被取代。 如果某个修补程序应用于多个产品或包含多个修复程序,则它可能会在多行中列出,并属于多个修补程序系列。

Windows Installer 不会以任何方式解释该 PatchFamily 值,而只会比较它与其他 PatchFamily 值的相等性。 PatchFamily 值在修补程序集所针对的 ProductCode 中必须唯一。 在复杂的修补方案中,PatchFamily 标识符可能需要全局唯一。

ProductCode

此字段中的值是可选的。 如果在此字段中输入了产品代码 GUID,并且正在将修补程序应用于指定的产品,则该修补程序将作为指定 PatchFamily 的成员进行排序和应用。 如果在此字段中输入了产品代码 GUID,并且未将修补程序应用于 ProductCode 指定的产品,则会忽略此行。 如果 ProductCode 中的值为 NULL,则无论产品代码是什么,都会将该修补程序作为所有修补程序目标的 PatchFamily 的成员进行排序和应用。

一个修补程序在同一个 PatchFamily 中可以有多个行,并且对于修补程序所针对的每个产品可以有一个不同的 ProductCode。 PatchFamily 的一行可为 ProductCode 指定 NULL。 如果目标产品与包含非 NULL ProductCode 的行匹配,则安装程序将使用匹配的行,并忽略包含 NULL ProductCode 的行。 如果没有任何指定的产品代码与目标匹配,则无论产品代码是什么,都会将该修补程序作为所有修补程序目标的 PatchFamily 的成员进行排序和应用。

Sequence

Sequence 列中的值指定此修补程序在指定的 PatchFamily 中的顺序。 Sequence 中的值以版本数据的格式表示。 该值包含 1 到 4 个字段,每个字段的范围为 0 到 65535。 PatchFamily 的成员按 Sequence 值的递增顺序排序并应用于目标产品。 例如,以下六个值是递增的:1、1.1、1.2、2.01、2.01.1、2.01.1.1。

Attributes

某行中存在 msidbPatchSequenceSupersedeEarlier 属性表示小型更新修补程序将取代同一 PatchFamily 中 Sequence 值较小的所有修补程序所提供的更新。 此修补程序包含指定的 PatchFamily 中先前修补程序提供的所有修复程序。 此属性并不表示此修补程序在所有情况下都会取代先前的修补程序,因为先前的修补程序可能属于多个修补程序系列。

在任何情况下,小型更新修补程序都不能取代次要升级重大升级修补程序,即使设置了 msidbPatchSequenceSupersedeEarlier 也是如此。

名称 含义
0x00 指示简单排序值。
msidbPatchSequenceSupersedeEarlier 0x01 指示取代此系列中先前修补程序的修补程序。

 

验证

ICE03
ICE06

在 Windows Installer 2.0 及更低版本中不受支持