【发布时间】:2018-06-21 09:35:39
【问题描述】:
我正在使用 WIX 创建 MSI 安装程序。一切都很好,我能够创建自己的产品并创造一切。
但是当我想创建升级时,它不起作用。
我使用了以下代码,其中 $(var.ProductUpgradeCode) 被定义并用作产品元素中的升级代码。
<Upgrade Id="$(var.ProductUpgradeCode)">
<UpgradeVersion OnlyDetect="yes" Property="SELFFOUND"
Minimum="$(var.ProductVersion)" IncludeMinimum="yes"
Maximum="$(var.ProductVersion)" IncludeMaximum="yes" />
<UpgradeVersion OnlyDetect="yes" Property="NEWERFOUND"
Minimum="$(var.ProductVersion)" IncludeMinimum="no" />
</Upgrade>
<CustomAction Id="AlreadyUpdated" Error="[ProductName] has already been updated to [ProductVersion] or newer." />
<CustomAction Id="NoDowngrade" Error="A later version of [ProductName] is already installed." />
<InstallExecuteSequence>
<Custom Action="AlreadyUpdated" After="FindRelatedProducts">SELFFOUND</Custom>
<Custom Action="NoDowngrade" After="FindRelatedProducts">NEWERFOUND</Custom>
<RemoveExistingProducts After="InstallFinalize"></RemoveExistingProducts>
</InstallExecuteSequence>
在旧 MSI 中,产品 ID="GUID1" Version="1.0.0"
在新的 MSI 中,产品 ID="GUID2" Version="1.0.1"
安装旧的时,我尝试安装新的。旧 MSI 启动并询问更改/修复/删除对话框。但我想继续安装,当按“安装”(在progressDlg之前)时,我想卸载旧版本。
在 1.0.0 和 1.0.1 之间只有一个文件更改。我所有的文件都有自己的组件和自己的 GUID 集(不是自动的)。
怎么了?是新的 WIX 版本吗?我昨天下载了最新的。
【问题讨论】:
-
我不认为您的问题出在所提供的代码中 - 这是因为它与您以任何方式描述的更新情况无关。对于这种较小的升级情况,您需要使用正确的参数开始安装。您只需要使用 Upgrade 元素对使用不同升级代码的早期安装进行升级,所有其他的将由 MajorUpgrade 元素完美处理。
标签: wix windows-installer