第二个补丁不会更新系统

时间:2015-08-18 14:19:01

标签: wix windows-installer

我已经创建了基础产品,补丁和后续补丁。例如,有三个文件:AAA.dll将由第一个补丁和第二个补丁更新; BBB.dll将由第一个补丁更新,CCC.dll将由第二个补丁更新。 添加GUID是静态的。

场景1:

  • 安装基础MSI
  • 安装第一个补丁
  • 结果:所有文件都已正确更新

场景2:

  • 安装基础MSI
  • 安装第二个补丁
  • 结果:所有文件都已正确更新

场景3:

  • 安装基础MSI
  • 安装第一个补丁
  • 安装第二个补丁
  • 结果:AAA.dll未更新,看起来只安装了第一个补丁

场景4:

  • 安装基础MSI
  • 安装第一个补丁
  • 安装第二个补丁
  • 卸载第一个补丁
  • 结果:一切正常(BBB.dll已恢复且AAA.dll具有版本,已包含在第二个补丁中)

场景5:

  • 安装基础MSI
  • 安装第2个补丁
  • 安装第1个补丁
  • 结果:AAA.dll被降级

任何想法,它可能是什么?

小更新:第一个修补程序包含多个注册表项,这些注册表项未包含在第二个修补程序中。这会导致错误的行为吗?

再次更新:添加了方案5。

更多详情

看起来序列号有问题。这是日志文件的一小段日志:

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和补丁是约。 48MB。这可能是个问题吗?

UPD

我的建议是通过一个小补丁证明的。对我来说,这看起来像是一个MS bug。有没有人知道,如果有可能联系MS并询问它是否是一个已知的错误或功能?或者最终创建并跟踪错误报告?

0 个答案:

没有答案