Wix burn 正在降级我的 msi 包

Posted

技术标签:

【中文标题】Wix burn 正在降级我的 msi 包【英文标题】:Wix burn is downgrading my msi package 【发布时间】:2017-10-24 19:43:43 【问题描述】:

我有一个烧录标准引导程序,它链接一个特定的 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:检测到相关包:1CFD803C-D610-4414-B308-28FDD8326542,范围:PerMachine,版本:8.11.0.19409,语言:0操作:主要升级

[120C:14C8][2017-10-20T16:49:05]i101:检测到的包:activex32,状态:不存在,缓存:无

[120C:14C8][2017-10-20T16:49:07]i201:计划包:activex32,状态:不存在,默认请求:存在,请求:存在,执行:安装,回滚:卸载,缓存:是的,取消缓存:否,依赖项:注册

[0CD8:0C04][2017-10-20T16:49:10]i305:已验证获取的有效负载:activex32 在路径:C:\ProgramData\Package Cache.unverified\activex32,移动到:C:\ProgramData\Package缓存21C87035-C870-4C06-8978-290D4FD71D33v8.11.0.18409\activex32.msi.

[0CD8:0C04][2017-10-20T16:49:10]i305:已验证获取的有效负载:activex32 在路径:C:\ProgramData\Package Cache.unverified\activex32,移动到:C:\ProgramData\Package缓存21C87035-C870-4C06-8978-290D4FD71D33v8.11.0.18409\activex32.msi.

[0CD8:12F8][2017-10-20T16:49:41]i323:注册包依赖提供者:21C87035-C870-4C06-8978-290D4FD71D33,版本:8.11.0.18409,包:activex32 [0CD8:12F8][2017-10-20T16:49:41]i301:应用执行包:activex32,操作:安装,路径:C:\ProgramData\Package Cache21C87035-C870-4C06-8978-290D4FD71D33v8. 11.0.18409\activex32.msi,参数:'ARPSYSTEMCOMPONENT="1" MSIFASTINSTALL="7"' [120C:14C8][2017-10-20T16:49:43]i319:应用执行包:activex32,结果:0x0,重启:无 [0CD8:12F8][2017-10-20T16:49:43]i325:注册依赖项:eb25107d-62c4-49d9-a7c8-0957943ccbdb 在包提供程序上:21C87035-C870-4C06-8978-290D4FD71D33,包: activex32

【问题讨论】:

Burn 默认情况下不会降级,所以会发生其他事情。日志肯定会说。 【参考方案1】:

我进行了更多调查并得出结论,即刻录(如果有的话)在允许或禁止降级方面没有多大作用。似乎把这个决定留给了 msi 包本身。

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

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

【讨论】:

以上是关于Wix burn 正在降级我的 msi 包的主要内容,如果未能解决你的问题,请参考以下文章

WiX 自定义操作在 MSI 中使用 [SourceDir] 和 Burn

WiX - Burn 支持两用 msi 包吗?

Wix/Burn - 不运行 MSIPackage 的条件,因此不卸载应用程序

强制 WiX Burn 引导程序允许 MSI 文件使用 REINSTALLMODE=amus

我可以使用 WiX 创建一个 MSI 来升级使用 Burn Bootstrapper 安装的应用程序吗?

自定义 WiX Burn 引导程序用户界面?