2015-02-09 106 views
-1

我创建了一个WiX的安装与Product Version1.0.0如何在WiX安装程序中添加“升级”配置?

<Product Id="*" Name="My Application" Language="1033" Version="1.0.0" Manufacturer="My Client" UpgradeCode="182bbc7d-8cc2-4014-9e1c-29312598bxc0"> 

我使用MajorUpgrade元素升级安装程序如下:

<MajorUpgrade Schedule="afterInstallInitialize" DowngradeErrorMessage="A newer version of [ProductName] is already installed." /> 

方案:

Scenario 1:安装版1.0.0已安装版本1.0.0

在安装相同的版本时,安装程​​序要求修复或删除,这是我想要的,并且工作正常。

Scenario 2:上已经安装了1.0.1版

安装1.0.0版本上安装的旧版本,安装程序将引发上单击确定错误,我的应用程序的更新版本已安装并退出。

我希望我的安装程序,以显示这个错误,并通过删除版本1.0.1和1.0.0安装

Scenario 3:安装版本1.0.1on已经安装了1.0.0版本

上安装更高继续安装版本,安装程序不会问任何问题,并通过删除1.0.0和安装1.0.1来继续安装。

我希望我的安装程序要求确认是升级到更高版本还是取消安装

这怎么实现?

回答

0

要降级,您需要在MajorUpgrade元素中设置属性“AllowDowngrades”。从下面的链接中浏览MajorUpgrade元素中的所有属性。

WiX MajorUpgrade

0

升级的默认行为是,他们只是发生。我认为这样的假设是,大多数人知道他们在安装升级(或降级)时所做的工作,并且将干预措施降到最低是件好事,而且在静默升级安装中,无论如何都无法要求确认 - 它恰好发生。

因此,除了允许降级之外,您还需要添加一个基于属性WIX_UPGRADE_DETECTED的确认对话框,可能会添加一个在该属性上显示条件的升级对话框。这有点尴尬,因为你知道的只是你正在升级的产品代码(这是WIX_UPGRADE_DETECTED的价值),没有关于已经安装的版本的其他信息。所以你只能说你正在升级(或者甚至降级)安装的版本。要获取已安装产品的相关信息,您需要使用类似Win32 MsiGetProductInfo()API的方式向系统查询该产品代码的名称和版本。这可能需要特权(即使你是管理员,UI序列也不会提升),所以事情变得非常棘手。

这是一个相当普遍的问题,所以有人可能已经做了一些事情,但快速搜索没有找到任何东西。

相关问题