【问题标题】:Properly install a higher version MSI in WIX在 WIX 中正确安装更高版本的 MSI
【发布时间】:2017-01-30 17:28:28
【问题描述】:

我想在安装更高版本的 MSI 之前/同时删除/卸载预安装的低版本 MSI。我的产品代码始终是唯一的,升级代码始终相同。

(我不想允许降级安装。)

但是当我安装更高版本的 MSI 时,它会被安装,但新安装和以前安装的 MSI 的添加/删除程序条目仍然存在。如何克服这个问题?以下是我的代码

<Product Id="*" Name="MyApp" Language="1033" Version="1.11.1111"  UpgradeCode="00000000-8030-4B76-8F3A-8B8BB1000000">
<Package InstallerVersion="200" Compressed="yes" Platform="x86" />

<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." AllowDowngrades="no" Schedule="afterInstallInitialize"/>

<Upgrade Id="{00000000-8030-4B76-8F3A-8B8BB1000000}">
  <UpgradeVersion OnlyDetect="no" Maximum="99.0.0.0" Property="PREVIOUSVERSIONSINSTALLED" IncludeMaximum="no"/>
  <UpgradeVersion OnlyDetect="yes" Minimum="1.0.0.0" Property="NEWERPRODUCTFOUND" IncludeMinimum="no"/>
</Upgrade>

【问题讨论】:

    标签: wix windows-installer


    【解决方案1】:

    从这里可以看出:

    http://www.joyofsetup.com/2010/01/16/major-upgrades-now-easier-than-ever/

    MajorUpgrade 元素替换了 Upgrade 元素。您已经指定了两种升级类型,因此可能会导致一些问题。

    如果版本在前三个字段中增加,UpgradeCode 是相同的并且 ProductCode 是新的,那么最可能的失败原因(并且安装了两个条目)是前一个是 perUser(或 perMachine ) 而你的升级正好相反。重大升级必须在相同的上下文中。

    【讨论】:

    • 那么,这是否意味着产品标签中的 ID 也应该是静态的?
    • 你所说的对升级很有用。实际问题是,如果为当前用户完成安装和升级,它会复制 ARP 条目。当我在“ALLUSERS =1”范围内安装和更新时,不会发生此问题。需要找出发生这种情况的原因
    猜你喜欢
    • 2012-04-18
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    • 2016-01-15
    • 1970-01-01
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多