【问题标题】:During major upgrade prompt user for version upgrade重大升级期间提示用户进行版本升级
【发布时间】:2015-11-15 00:53:27
【问题描述】:

我已经使用 WIX 构建了一个 msi 安装程序。根据要求,我必须为下一次构建进行升级。所以,我检查了升级,升级类型,它的实施步骤,发现主要升级适合我们。因此,按照步骤,我在项目主 .wxs 文件中更改了包代码、产品代码和版本号(增加版本)并生成正确升级的构建(为此我在注册表、控制面板等中检查了...) .

主要升级版本正在正确迁移功能,但用户不知道安装程序是在升级还是进行全新安装。当用户要进行安装时,我期待一条消息,例如“安装程序已从 v1.0.0.0 升级到 v2.0.0.0。你想继续吗”。

注意:在我的项目中,我只有 2 个自定义对话框,其他所有对话框(例如欢迎对话框、EULA 对话框、InstallDir 对话框等)默认来自 WixUIExtension.dll。

我浏览了一些与重大升级相关的链接和博客,但我没有找到与此相关的适当解决方案。请分享您宝贵的 cmets 以及对此的最佳方法/实践是什么。

【问题讨论】:

    标签: wix windows-installer wix3.8


    【解决方案1】:

    当您进行重大升级时,假设您使用的是 WiX majorupgrade 标签,则设置 WIX_UPGRADE_DETECTED 属性。您可以使用它来调节要显示的对话框。该属性值将是旧产品的 ProductCode,因此您需要执行 MsiGetProductInfo (ProductCode, ....INSTALLPROPERTY_VERSIONSTRING....) 之类的操作来获取其版本。该对话框可能需要取消才能中止升级。

    您可能会遇到问题,因为检索 ProductVersion 可能需要提升。一般来说,没有人会费心去验证这样的升级,因为您的客户比这更聪明。他们知道安装是否正在升级新产品,并且您问的问题越少,他们就越开心。

    【讨论】:

      【解决方案2】:

      您可以通过检查 UPGRADINGPRODUCTCODE 属性来检测重大升级。然后,您需要一个自定义操作来查询 MSI 以获取该已安装产品的 ProductVersion。最后,您必须询问用户并继续或中止。

      您打算如何处理静默安装?只是自动继续或要求他们传递诸如 AGREETOUPGRADE=1 之类的属性?

      【讨论】:

        猜你喜欢
        • 2011-06-03
        • 1970-01-01
        • 1970-01-01
        • 2019-07-23
        • 1970-01-01
        • 1970-01-01
        • 2011-12-23
        • 2011-02-19
        • 2017-04-12
        相关资源
        最近更新 更多