2015-08-21 31 views
-2

我一直在使用WIX建立了一个MSI安装程序。根据要求,我必须为下一次构建提供升级。所以,我检查了升级,升级类型,其实施步骤,发现主要升级将适合我们。所以,按照我的步骤在项目的主要.wxs文件改变包装代码,商品代码和版本号(增加版本),并生成正确的升级版本(对于我在注册表检查,控制面板,等...) 。在为主要版本升级提示用户升级

主要升级版本是正确迁移功能,但用户没有安装信息是否升级或做了全新安装。我预计会有一条消息,例如“安装程序从V1.0.0.0升级到V2.0.0.0,您是否想要继续”,因为用户正在进行安装。

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

我探讨几个环节&有关重大升级的博客,但我并没有得到与此相关的妥善解决。请分享您的宝贵意见&这是最好的方式/做法。

回答

0

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

你打算如何处理上静默安装?只需自动继续或要求他们传递一个属性,如AGREETOUPGRADE = 1?

0

当你做了重大升级,假设你正在使用的WiX的majorupgrade标签,然后将WIX_UPGRADE_DETECTED属性设置。您可以使用它来调整要显示的对话框。该属性值将较旧的产品的产品代码,所以你会做这样的事情MsiGetProductInfo(产品代码,.... INSTALLPROPERTY_VERSIONSTRING ....)来获取它的版本。该对话框大概需要取消以中止升级。

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