如何获得 Wix Burn 捆绑包以阻止升级

Posted

技术标签:

【中文标题】如何获得 Wix Burn 捆绑包以阻止升级【英文标题】:How to get Wix Burn bundle to block upgrade 【发布时间】:2015-09-03 13:56:09 【问题描述】:

我发布了一系列产品的 beta 版本,用户必须在安装“最终公开版本”之前删除这些版本。

在这种情况下,我通常会进行重大升级,但在这种情况下,由于产品的性质,重大升级很难实施。未来的升级从“干净的基线”开始会容易得多。

是否有内置的方式来让刻录检测并通知用户必须卸载以前安装的版本?

或者我是否需要将包添加到执行检查、显示消息并使包失败的包中?

如果它与答案相关,则所有以前的版本都具有相同的 major.minor.patch 版本。只是内部版本号发生了变化,例如1.0.0.1、1.0.0.20、1.0.0.50;最终版本是 1.0.0.100。

【问题讨论】:

【参考方案1】:

假设您产品的 MSI 中的升级表是按照“正常”用法构建的,您可以在 BA 中使用 OnDetectRelatedMsiPackage 回调来评估找到的每个安装。您需要在该回调中调用 MsiGetProductInfo() API(或 DTF 等价物?)以获取版本字符串,然后解析该字符串以确定安装的版本号是否小到足以阻止/失败您的安装。

请注意,Windows Installer 中的主要升级机制仅检查版本 quad 的前三个部分,因此 Windows Installer 本身无法区分 1.0.0.1 和 1.0.0.100。您可能有一个问题需要解决。

【讨论】:

以上是关于如何获得 Wix Burn 捆绑包以阻止升级的主要内容,如果未能解决你的问题,请参考以下文章

Wix Burn,我如何允许降级?

Wix Custom BA 正确处理升级

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

如何在升级过程中运行捆绑包时,如何在WIX(Windows安装程序xml)引导程序项目中将按钮文本更改为“升级”?

Wix 3.7 Burn - 如何使用动态信息制作自定义启动画面

WiX Burn - 根据条件设置 InstallFolder 变量