Wix'高级'安装不会卸载以前的版本

时间:2012-03-14 01:07:04

标签: wix uninstall previous-installation

如果我遗漏任何重要细节,我想提前道歉。

我正在尝试执行升级,以便在安装新版本之前删除以前版本的软件(以及所有组件)。

我会尽量避免让你厌烦细节,并说如果你做一个“典型”安装,一切都按计划进行。如果您选择进行高级安装(为所有用户指定安装,安装位置等),那么它似乎完全跳过“卸载以前的版本”步骤。

到目前为止,我已经完成了以下工作:

- 编辑我的UpgradeVersion标记以匹配另一个stackoverflow问题的建议

- 验证'OLDVERSIONBEINGUPGRADED'属性是否正确设置

- 验证升级代码/ ID是否相同,版本号是顺序的(从1.0.8升级到1.0.10) - 毕竟,“典型”安装正常工作!

- 遵循此处给出的建议:WiX-- always overwrite the previous version并遵循:http://wix.sourceforge.net/manual-wix3/major_upgrade.htm

- 通过手动调用msiexec以通过它的产品ID卸载以前的版本来实现hack(这很失败,因为我们已经安装了一些东西 - 有更好的方法来安排它吗?)

我的产品/升级部分如下所示:

<Product Id="GUID1" UpgradeCode="GUID2" Version="1.0.10.0">
    <Package Compressed="yes" InstallerVersion="200"/>
    <MajorUpgrade Schedule="afterInstallInitialize" 
      DowngradeErrorMessage="Another version of [ProductName] is already installed."/>
    <Upgrade Id="GUID2">
        <UpgradeVersion Minimum="1.0.10" OnlyDetect="yes"
             Property="NEWERVERSIONDETECTED" />
        <UpgradeVersion Maximum="1.0.10" IncludeMaximum="no" 
             Property="PREVIOUSVERSIONINSTALLED" />
    </Upgrade>

我是一个Wix新手,所以在描述我的问题时我可能忽略了重要的细节。如果我忽略了重要内容,请告诉我。

提前感谢您提供的任何输入。

1 个答案:

答案 0 :(得分:2)

听起来你遇到了和我一样的限制,请参阅this question。您无法在升级中更改安装范围(“每用户”或“每台计算机”)。

在Windows Installer中没有简单的方法。您只能创建一个卸载以前版本的单独的bootstrapper exe,然后开始安装新版本。