在 Bundle 或 MSI 中升级?

Posted

技术标签:

【中文标题】在 Bundle 或 MSI 中升级?【英文标题】:Upgrade in Bundle or MSI? 【发布时间】:2017-02-08 20:49:23 【问题描述】:

我对 WIX 完全陌生,但过去很多年我一直在使用 Installshield。我现在正在用 WIX 重写我们的安装,并且大部分部件都在我的 msi 中工作。我现在开始在 Bundle 部分安装我们需要的 3 个先决条件,.Net 框架、VC 运行时和 AccessExcel。

我对 1 个概念感到困惑(到目前为止!)我不认为我想要 ARP 中的 Bundle,但我确实想要 3 个 redist 和我们的 MSI。我目前正在禁用 Bundle 中的 Modify/Repair/Remove,然后使用 DisplayInternalUI 和 Visible 运行 msi。

我的问题是,这是最好的方法吗?然后我让 MSI 处理主要升级和 EULA。我需要使用传入的不同参数为每次部署重建此 msi 3 次,所以我最终得到了 3 个不同的 Bundle。每个捆绑包都应该能够运行并完全替换其他捆绑包。我总是在 Installshield 中使用 MajorUpdates 处理这个问题,并在每个构建中使用相同的升级代码。

谢谢!

【问题讨论】:

【参考方案1】:

我也有同样的情况——厌倦了 IS 并改用 Wix。我一直在研究捆绑并得出结论,当使用刻录时,捆绑成为您的安装包,而不是 msi。这是我必须克服的概念——这意味着我必须重新连接我的大脑并专注于捆绑。我现在认为 msi 文件类似于合并模块(仅在概念上)。

另见https://***.com/a/21420776/1803823

【讨论】:

以上是关于在 Bundle 或 MSI 中升级?的主要内容,如果未能解决你的问题,请参考以下文章

Bundle 可以在安装期间从本地文件夹中引用 MSI 吗?

将参数从bootstrapper传递到msi bundle包

是否可以在引导程序中的检测阶段之前从链中的 MSI 文件中读取 MSI 属性?

从 Wix Bootstrapper Bundle 检查文件版本

Wix:如何创建超过 2GB 的 bundle.exe(外部文件)

带有动态 MsiPackage 名称的 WiX Bundle