Wix 'Advanced' 安装不卸载以前的版本

标签 wix uninstallation 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 卸载以前的版本(这失败了,因为我们已经在安装一些东西——有没有更好的方法来安排这个?)

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

<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 新手,所以我在描述问题时可能忽略了重要的细节。如果我忽略了重要的内容,请告诉我。

提前感谢您提供的任何意见。

最佳答案

听起来您遇到了与我相同的限制,请参阅 this question .您不能在升级中更改安装范围(“每用户”或“每台机器”)。

在 Windows Installer 中没有简单的解决方法。你只能制作一个单独的bootstrapper exe卸载之前的版本,然后开始安装新版本。

关于Wix 'Advanced' 安装不卸载以前的版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9694579/

相关文章:

wix - 如何在 WIX 中对特定目录进行 DirectorySearch

wix - 使用在 Wix 中创建的其他 x86 mai 包写入注册表的 x64 部分

c# - 在 WPF 中创建自定义安装程序

wix - 如何使用预处理器变量管理 Bundle 的代码?

wix - 在 wix 中卸载旧版本的 4 位数字,如 1.1.0.1

wix - 卸载期间 WIX 中的自定义操作

python - 你如何卸载 python 包/库

java - Java 应用程序的安装程序