Wix burn 正在降级我的 msi 软件包

Wix burn is downgrading my msi package

我有一个刻录标准引导程序,它按如下方式链接一个特定的 msi

<Chain>
...
<MsiPackage Id="activex32" Cache="yes" SourceFile="$(var.MyPath)\activex32.msi" />
...
</Chain>

此 msi 遵循 MajorUpgrade 策略:每次构建都会更改 PackageCode 和 ProductCode,但在构建过程中保持 UpgradeCode 不变。

问题是,有些人实际上将此 msi 安装为独立软件包。其中一些人还想安装我的引导程序,它是用旧版本 activex32.msi(较低版本号)编译的。发生这种情况时,引导程序会降级 activex32.msi.

我想知道如何防止降级。是的,我可以用最新的 activex32.msi 更新我的引导程序,但这并不能防止该问题在未来再次发生。

更新: 日志没说多少,个人认为

[120C:14C8][2017-10-20T16:49:05]i103: Detected related package: {1CFD803C-D610-4414-B308-28FDD8326542}, scope: PerMachine, version: 8.11.0.19409, language: 0 operation: MajorUpgrade

[120C:14C8][2017-10-20T16:49:05]i101: Detected package: activex32, state: Absent, cached: None

[120C:14C8][2017-10-20T16:49:07]i201: Planned package: activex32, state: Absent, default requested: Present, ba requested: Present, execute: Install, rollback: Uninstall, cache: Yes, uncache: No, dependency: Register

[0CD8:0C04][2017-10-20T16:49:10]i305: Verified acquired payload: activex32 at path: C:\ProgramData\Package Cache.unverified\activex32, moving to: C:\ProgramData\Package Cache{21C87035-C870-4C06-8978-290D4FD71D33}v8.11.0.18409\activex32.msi.

[0CD8:0C04][2017-10-20T16:49:10]i305: Verified acquired payload: activex32 at path: C:\ProgramData\Package Cache.unverified\activex32, moving to: C:\ProgramData\Package Cache{21C87035-C870-4C06-8978-290D4FD71D33}v8.11.0.18409\activex32.msi.

[0CD8:12F8][2017-10-20T16:49:41]i323: Registering package dependency provider: {21C87035-C870-4C06-8978-290D4FD71D33}, version: 8.11.0.18409, package: activex32 [0CD8:12F8][2017-10-20T16:49:41]i301: Applying execute package: activex32, action: Install, path: C:\ProgramData\Package Cache{21C87035-C870-4C06-8978-290D4FD71D33}v8.11.0.18409\activex32.msi, arguments: ' ARPSYSTEMCOMPONENT="1" MSIFASTINSTALL="7"' [120C:14C8][2017-10-20T16:49:43]i319: Applied execute package: activex32, result: 0x0, restart: None [0CD8:12F8][2017-10-20T16:49:43]i325: Registering dependency: {eb25107d-62c4-49d9-a7c8-0957943ccbdb} on package provider: {21C87035-C870-4C06-8978-290D4FD71D33}, package: activex32

我做了一些更多的调查并得出结论,burn 并没有做太多,如果有的话 (?),允许或禁止降级。它似乎将这个决定留给了 msi 包本身。

就我而言,activex32.msi 允许降级。当我用 Orca 更改它时,修改升级 table 以禁止降级,并使用这个修改后的包编译一个新的引导程序,然后一切正常并且刻录没有降级现有的 activex32.msi.

有点失望,因为我无法控制第 3 方包的构建方式。