【问题标题】:Upgrade MSI using WIX使用 WIX 升级 MSI
【发布时间】: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


【解决方案1】:

假设您的新 MSI 中的其他所有内容都是正确的,我看到的错误是您的升级设置中有 OnlyDetect=yes。正如 WiX 文档所说,“设置为“是”以检测产品和应用程序但不卸载。”所以从改变它开始。

请注意,使用 MajorUpgrade 元素更为常见,该元素负责设置。如果没有详细的日志,则其他所有内容均不正确(例如您的 MSI 中的 FindRelatedProducts)并不明显。

【讨论】:

  • 要获取日志,我必须通过 msiexec 执行它,对吗?我从未尝试过,但我在帖子中看到了。我可能会试一试。而且 MajorUpgrade 可能比手动执行要好。我会试试的。但我认为这是我的自定义 UI 的问题。我从 FeatureTree 开始,我改变了其中的一些,我想知道这是否会“破坏”升级元素的那部分。
  • msiexec /l*v logfile.txt /i installer.msi 在命令行中应该会为您提供作为安装运行的 MSI 的日志文件。
  • 我使用了 majorupgrade 元素并输入了 product id="*",现在一切正常。
猜你喜欢
  • 1970-01-01
  • 2015-04-12
  • 1970-01-01
  • 1970-01-01
  • 2017-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多