无需卸载的 Wix 安装程序升级

Posted

技术标签:

【中文标题】无需卸载的 Wix 安装程序升级【英文标题】:Wix Installer Upgrade without uninstall 【发布时间】:2014-01-31 18:37:36 【问题描述】:

我目前正在使用 wix 构建安装程序,这里有一些我不知道该怎么做的要求。

(相同版本或新版本的安装程序,但版本相同)用户可以点击安装程序重新安装软件,无需先卸载。

安装时UI过程中有一些配置,结果已经写入安装文件夹中的一个文件,重装软件时可以从文件中加载这些参数吗?

我试过了

相同的产品ID; 将产品版本从“1.0.0”修改为“1.0.1”

在wxs中,和我添加了相同的升级代码,添加了RemoveExistingProducts Before="InstallInitialize"

在安装顺序中,但我仍然收到“wix another version of this product is already installed”错误。

请帮忙。

    <Product  Id='fixed-ID' 
              UpgradeCode='fixed-upgrade-ID' 
              Version='1.1.1' > 
        <Package InstallerVersion='300'/>

            <Property Id="PREVIOUSVERSIONSINSTALLED" Secure="yes" />

            <Upgrade Id="fixed-upgrade-ID">
                <UpgradeVersion Property="PREVIOUSVERSIONSINSTALLED" 
                  Minimum="0.0.0" 
                  Maximum="1.1.1" 
                  IncludeMaximum="no" 
                  IncludeMinimum="yes"
                  OnlyDetect="no" 
                  />
            </Upgrade>

        <InstallExecuteSequence>

          <RemoveExistingProducts Before="InstallInitialize" />
       </InstallExecuteSequence>
    </Product>

【问题讨论】:

【参考方案1】:

我建议使用最新版本的 WiX 中的 MajorUpgrade 元素。创建支持升级的安装程序需要很多复杂性。您确实需要确保同时更改产品 ID 和版本。如果您不更改产品 ID,您将始终收到错误消息(除非您使用包含“v”的 REINSTALLMODE 运行安装,但这是一次次要升级并限制了您可以执行的操作)。必须更改版本以确保您拥有单向升级路径,否则旧的安装程序可能会在版本相同的情况下升级新的安装程序。

这个how-to 有一个很棒的演练。

【讨论】:

以上是关于无需卸载的 Wix 安装程序升级的主要内容,如果未能解决你的问题,请参考以下文章

WiX 安装程序在卸载时删除文件,但在升级时不删除

如何防止 wix 自定义引导程序卸载 UI 在升级过程中显示

如何实现 WiX 安装程序升级?

Wix 安装程序有选择地卸载以前的版本

如何在 wix 安装程序中卸载另一个程序?

WiX 刻录包安装程序 - 升级安装时未更新 ExePackage