第二个补丁不更新系统
Second patch does not updates system
我已经创建了一个基础产品、一个补丁和一个后续补丁。例如,有三个文件: AAA.dll 将由第一个补丁和第二个补丁更新; BBB.dll 将在第一个补丁更新,CCC.dll 将在第二个补丁更新。
添加 GUID 是静态的。
场景 1:
- 安装基础 MSI
- 安装第一个补丁
- 结果:所有文件都已正确更新
场景 2:
- 安装基础 MSI
- 安装第二个补丁
- 结果:所有文件都已正确更新
场景 3:
- 安装基础 MSI
- 安装第一个补丁
- 安装第二个补丁
- 结果:AAA.dll 未更新,看起来只安装了第一个补丁
场景 4:
- 安装基础 MSI
- 安装第一个补丁
- 安装第二个补丁
- 卸载第一个补丁
- 结果:一切正常(BBB.dll 已恢复并且 AAA.dll 具有包含在第二个补丁中的版本)
场景 5:
- 安装基础 MSI
- 安装第二个补丁
- 安装第一个补丁
- 结果:AAA.dll 被降级
有什么想法吗?
小更新:第一个补丁包含几个注册表项,它们不包含在第二个补丁中。这会导致错误行为吗?
再更新: 添加了场景 5。
更多详情
sequencer好像有问题。这是日志文件的一小段日志:
MSI (c) (F4:00) [17:38:09:395]: Note: 1: 2262 2: _Tables 3: -2147287038
MSI (c) (F4:00) [17:38:09:395]: Note: 1: 2262 2: _Columns 3: -2147287038
MSI (c) (F4:00) [17:38:09:395]: The patch sequencer will optimize its execution by not checking the applicability of applied patches.
MSI (c) (F4:00) [17:38:09:395]: PATCH SEQUENCER: verifying the applicability of QFE patch D:\Vadim\Build 10878\Packages\Patch_5.3.1.152\Patch_5.3.1.152.msp against product code: {E19A7576-0466-4156-A8B1-2796EFBF38CD}, product version: 5.3.1.118, product language 1033 and upgrade code: {AB899CB4-E853-4203-B867-2B6E6A3F2F2B}
MSI (c) (F4:00) [17:38:09:395]: Validating transform '_5.3.1.118.1' with validation bits 0x922
MSI (c) (F4:00) [17:38:09:395]: Transform '_5.3.1.118.1' is valid.
MSI (c) (F4:00) [17:38:09:395]: PATCH SEQUENCER: QFE patch D:\Vadim\Build 10878\Packages\Patch_5.3.1.152\Patch_5.3.1.152.msp is applicable.
MSI (c) (F4:00) [17:38:09:395]: The original #_QFESequence table:
MSI (c) (F4:00) [17:38:09:395]: PatchGUID: {70D34A3C-342B-4DB9-A163-C26DC50342CF} ResultantVersion: 5.3.1.118 PatchFamily: Hotfix__3 Sequence: 5.3.1.148 Type: QFE
MSI (c) (F4:00) [17:38:09:395]: PatchGUID: {0678A98C-E04D-4FC2-96C3-CA850D964BD0} ResultantVersion: 5.3.1.118 PatchFamily: Hotfix__4 Sequence: 5.3.1.152 Type: QFE
MSI (c) (F4:00) [17:38:09:395]: The pre-sorted #_QFESequence table: - this is useful to see if patches had been ordered correctly within resultant versions and patch families
MSI (c) (F4:00) [17:38:09:395]: PatchGUID: {70D34A3C-342B-4DB9-A163-C26DC50342CF} ResultantVersion: 5.3.1.118 PatchFamily: Hotfix__3 Sequence: 5.3.1.148 VersionOrder: 0 SequenceOrder: 0 Type: QFE
MSI (c) (F4:00) [17:38:09:395]: PatchGUID: {0678A98C-E04D-4FC2-96C3-CA850D964BD0} ResultantVersion: 5.3.1.118 PatchFamily: Hotfix__4 Sequence: 5.3.1.152 VersionOrder: 0 SequenceOrder: 0 Type: QFE
MSI (c) (F4:00) [17:38:09:395]: PATCH SEQUENCER: The initial #_Predecessor table:
MSI (c) (F4:00) [17:38:09:395]: PatchFamily: Hotfix__3, PatchGUID: {70D34A3C-342B-4DB9-A163-C26DC50342CF}, Predecessor GUID: NULL
MSI (c) (F4:00) [17:38:09:395]: PatchFamily: Hotfix__4, PatchGUID: {0678A98C-E04D-4FC2-96C3-CA850D964BD0}, Predecessor GUID: NULL
MSI (c) (F4:00) [17:38:09:395]: PATCH SEQUENCER: Step 1
MSI (c) (F4:00) [17:38:09:395]: PATCH SEQUENCER: patch {70D34A3C-342B-4DB9-A163-C26DC50342CF} (PatchFamily Hotfix__3) will be sequenced.
MSI (c) (F4:00) [17:38:09:395]: PATCH SEQUENCER: patch {0678A98C-E04D-4FC2-96C3-CA850D964BD0} (PatchFamily Hotfix__4) will be sequenced.
MSI (c) (F4:00) [17:38:09:395]: PATCH SEQUENCER: The resulting #_OrderedGUIDs table:
MSI (c) (F4:00) [17:38:09:395]: Patch: {0678A98C-E04D-4FC2-96C3-CA850D964BD0} Order: 0 (Family: Hotfix__4)
MSI (c) (F4:00) [17:38:09:395]: Patch: {70D34A3C-342B-4DB9-A163-C26DC50342CF} Order: 1 (Family: Hotfix__3)
MSI (c) (F4:00) [17:38:09:395]: The ordered #_QFESequence table: - has the final sequence of QFEs. It lists each PatchGUID only once.
MSI (c) (F4:00) [17:38:09:395]: PatchGUID: {0678A98C-E04D-4FC2-96C3-CA850D964BD0} ResultantVersion: 5.3.1.118 PatchFamily: Hotfix__4 Sequence: 5.3.1.152 Order: 0
MSI (c) (F4:00) [17:38:09:395]: PatchGUID: {70D34A3C-342B-4DB9-A163-C26DC50342CF} ResultantVersion: 5.3.1.118 PatchFamily: Hotfix__3 Sequence: 5.3.1.148 Order: 1
MSI (c) (F4:00) [17:38:09:395]: PATCH SEQUENCER: there's no supersedence information available, so no patches will be superseded.
MSI (c) (F4:00) [17:38:09:395]: SequencePatches returns success.
MSI (c) (F4:00) [17:38:09:395]: Final Patch Application Order:
MSI (c) (F4:00) [17:38:09:395]: {0678A98C-E04D-4FC2-96C3-CA850D964BD0} - D:\Vadim\Build 10878\Packages\Patch_5.3.1.152\Patch_5.3.1.152.msp
MSI (c) (F4:00) [17:38:09:395]: {70D34A3C-342B-4DB9-A163-C26DC50342CF} -
MSI (c) (F4:00) [17:38:09:395]: Machine policy value 'DisablePatch' is 0
MSI (c) (F4:00) [17:38:09:395]: Machine policy value 'AllowLockdownPatch' is 0
MSI (c) (F4:00) [17:38:09:395]: Machine policy value 'DisableLUAPatching' is 0
MSI (c) (F4:00) [17:38:09:396]: Machine policy value 'DisableFlyWeightPatching' is 0
但是为什么呢?我该如何解决?小型测试产品没有问题,它的构建方式与真实产品相同。但在这种情况下,实际产品的基础 MSI 大于 600Mb,补丁约为 600Mb。 48MB。这会是个问题吗?
更新
我的建议被一个小补丁证明了。对我来说,这看起来像是一个 MS 错误。有谁知道,是否可以联系 MS 并询问它是否是已知错误或功能?或者最终创建并跟踪错误报告?
好吧,解决方案非常简单 - 我们使用了不同的 "Patch Family" 名称。
一切正常,当相同的"Patch Family"将被使用时。
我已经创建了一个基础产品、一个补丁和一个后续补丁。例如,有三个文件: AAA.dll 将由第一个补丁和第二个补丁更新; BBB.dll 将在第一个补丁更新,CCC.dll 将在第二个补丁更新。 添加 GUID 是静态的。
场景 1:
- 安装基础 MSI
- 安装第一个补丁
- 结果:所有文件都已正确更新
场景 2:
- 安装基础 MSI
- 安装第二个补丁
- 结果:所有文件都已正确更新
场景 3:
- 安装基础 MSI
- 安装第一个补丁
- 安装第二个补丁
- 结果:AAA.dll 未更新,看起来只安装了第一个补丁
场景 4:
- 安装基础 MSI
- 安装第一个补丁
- 安装第二个补丁
- 卸载第一个补丁
- 结果:一切正常(BBB.dll 已恢复并且 AAA.dll 具有包含在第二个补丁中的版本)
场景 5:
- 安装基础 MSI
- 安装第二个补丁
- 安装第一个补丁
- 结果:AAA.dll 被降级
有什么想法吗?
小更新:第一个补丁包含几个注册表项,它们不包含在第二个补丁中。这会导致错误行为吗?
再更新: 添加了场景 5。
更多详情
sequencer好像有问题。这是日志文件的一小段日志:
MSI (c) (F4:00) [17:38:09:395]: Note: 1: 2262 2: _Tables 3: -2147287038
MSI (c) (F4:00) [17:38:09:395]: Note: 1: 2262 2: _Columns 3: -2147287038
MSI (c) (F4:00) [17:38:09:395]: The patch sequencer will optimize its execution by not checking the applicability of applied patches.
MSI (c) (F4:00) [17:38:09:395]: PATCH SEQUENCER: verifying the applicability of QFE patch D:\Vadim\Build 10878\Packages\Patch_5.3.1.152\Patch_5.3.1.152.msp against product code: {E19A7576-0466-4156-A8B1-2796EFBF38CD}, product version: 5.3.1.118, product language 1033 and upgrade code: {AB899CB4-E853-4203-B867-2B6E6A3F2F2B}
MSI (c) (F4:00) [17:38:09:395]: Validating transform '_5.3.1.118.1' with validation bits 0x922
MSI (c) (F4:00) [17:38:09:395]: Transform '_5.3.1.118.1' is valid.
MSI (c) (F4:00) [17:38:09:395]: PATCH SEQUENCER: QFE patch D:\Vadim\Build 10878\Packages\Patch_5.3.1.152\Patch_5.3.1.152.msp is applicable.
MSI (c) (F4:00) [17:38:09:395]: The original #_QFESequence table:
MSI (c) (F4:00) [17:38:09:395]: PatchGUID: {70D34A3C-342B-4DB9-A163-C26DC50342CF} ResultantVersion: 5.3.1.118 PatchFamily: Hotfix__3 Sequence: 5.3.1.148 Type: QFE
MSI (c) (F4:00) [17:38:09:395]: PatchGUID: {0678A98C-E04D-4FC2-96C3-CA850D964BD0} ResultantVersion: 5.3.1.118 PatchFamily: Hotfix__4 Sequence: 5.3.1.152 Type: QFE
MSI (c) (F4:00) [17:38:09:395]: The pre-sorted #_QFESequence table: - this is useful to see if patches had been ordered correctly within resultant versions and patch families
MSI (c) (F4:00) [17:38:09:395]: PatchGUID: {70D34A3C-342B-4DB9-A163-C26DC50342CF} ResultantVersion: 5.3.1.118 PatchFamily: Hotfix__3 Sequence: 5.3.1.148 VersionOrder: 0 SequenceOrder: 0 Type: QFE
MSI (c) (F4:00) [17:38:09:395]: PatchGUID: {0678A98C-E04D-4FC2-96C3-CA850D964BD0} ResultantVersion: 5.3.1.118 PatchFamily: Hotfix__4 Sequence: 5.3.1.152 VersionOrder: 0 SequenceOrder: 0 Type: QFE
MSI (c) (F4:00) [17:38:09:395]: PATCH SEQUENCER: The initial #_Predecessor table:
MSI (c) (F4:00) [17:38:09:395]: PatchFamily: Hotfix__3, PatchGUID: {70D34A3C-342B-4DB9-A163-C26DC50342CF}, Predecessor GUID: NULL
MSI (c) (F4:00) [17:38:09:395]: PatchFamily: Hotfix__4, PatchGUID: {0678A98C-E04D-4FC2-96C3-CA850D964BD0}, Predecessor GUID: NULL
MSI (c) (F4:00) [17:38:09:395]: PATCH SEQUENCER: Step 1
MSI (c) (F4:00) [17:38:09:395]: PATCH SEQUENCER: patch {70D34A3C-342B-4DB9-A163-C26DC50342CF} (PatchFamily Hotfix__3) will be sequenced.
MSI (c) (F4:00) [17:38:09:395]: PATCH SEQUENCER: patch {0678A98C-E04D-4FC2-96C3-CA850D964BD0} (PatchFamily Hotfix__4) will be sequenced.
MSI (c) (F4:00) [17:38:09:395]: PATCH SEQUENCER: The resulting #_OrderedGUIDs table:
MSI (c) (F4:00) [17:38:09:395]: Patch: {0678A98C-E04D-4FC2-96C3-CA850D964BD0} Order: 0 (Family: Hotfix__4)
MSI (c) (F4:00) [17:38:09:395]: Patch: {70D34A3C-342B-4DB9-A163-C26DC50342CF} Order: 1 (Family: Hotfix__3)
MSI (c) (F4:00) [17:38:09:395]: The ordered #_QFESequence table: - has the final sequence of QFEs. It lists each PatchGUID only once.
MSI (c) (F4:00) [17:38:09:395]: PatchGUID: {0678A98C-E04D-4FC2-96C3-CA850D964BD0} ResultantVersion: 5.3.1.118 PatchFamily: Hotfix__4 Sequence: 5.3.1.152 Order: 0
MSI (c) (F4:00) [17:38:09:395]: PatchGUID: {70D34A3C-342B-4DB9-A163-C26DC50342CF} ResultantVersion: 5.3.1.118 PatchFamily: Hotfix__3 Sequence: 5.3.1.148 Order: 1
MSI (c) (F4:00) [17:38:09:395]: PATCH SEQUENCER: there's no supersedence information available, so no patches will be superseded.
MSI (c) (F4:00) [17:38:09:395]: SequencePatches returns success.
MSI (c) (F4:00) [17:38:09:395]: Final Patch Application Order:
MSI (c) (F4:00) [17:38:09:395]: {0678A98C-E04D-4FC2-96C3-CA850D964BD0} - D:\Vadim\Build 10878\Packages\Patch_5.3.1.152\Patch_5.3.1.152.msp
MSI (c) (F4:00) [17:38:09:395]: {70D34A3C-342B-4DB9-A163-C26DC50342CF} -
MSI (c) (F4:00) [17:38:09:395]: Machine policy value 'DisablePatch' is 0
MSI (c) (F4:00) [17:38:09:395]: Machine policy value 'AllowLockdownPatch' is 0
MSI (c) (F4:00) [17:38:09:395]: Machine policy value 'DisableLUAPatching' is 0
MSI (c) (F4:00) [17:38:09:396]: Machine policy value 'DisableFlyWeightPatching' is 0
但是为什么呢?我该如何解决?小型测试产品没有问题,它的构建方式与真实产品相同。但在这种情况下,实际产品的基础 MSI 大于 600Mb,补丁约为 600Mb。 48MB。这会是个问题吗?
更新
我的建议被一个小补丁证明了。对我来说,这看起来像是一个 MS 错误。有谁知道,是否可以联系 MS 并询问它是否是已知错误或功能?或者最终创建并跟踪错误报告?
好吧,解决方案非常简单 - 我们使用了不同的 "Patch Family" 名称。
一切正常,当相同的"Patch Family"将被使用时。