Wix:如何将主要升级限制为主要版本号?

Wix:如何将主要升级限制为主要版本号?,wix,limit,upgrade,Wix,Limit,Upgrade,我需要基于wix的安装程序提供以下行为: 主版本1.x.x行中的每个设置都应该更新任何 1.x.x行的早期版本 主版本中的每个设置 2.x.x行应主要更新2.x.x行的任何以前版本,但 不要管1.x.x行 我想我可以用下面的代码来实现这一点,但是安装程序删除了以前的1.x.x版本。我在说什么吗?这可能吗 <Upgrade Id="myguid"> <UpgradeVersion OnlyDetect="yes" Minimum="2.0.0.1" P

我需要基于wix的安装程序提供以下行为:

  • 主版本1.x.x行中的每个设置都应该更新任何 1.x.x行的早期版本
  • 主版本中的每个设置 2.x.x行应主要更新2.x.x行的任何以前版本,但 不要管1.x.x行
我想我可以用下面的代码来实现这一点,但是安装程序删除了以前的1.x.x版本。我在说什么吗?这可能吗

    <Upgrade Id="myguid">
        <UpgradeVersion OnlyDetect="yes" Minimum="2.0.0.1" Property="NEWERVERSIONDETECTED" IncludeMinimum="no" />
        <UpgradeVersion OnlyDetect="no" Maximum="2.0.0.1" Property="OLDERVERSIONBEINGUPGRADED" IncludeMaximum="no" />
    </Upgrade>
    <InstallExecuteSequence>
        <RemoveExistingProducts After="InstallInitialize" />
    </InstallExecuteSequence>


在单个UpgradeVersion元素上放置@Minimum和@Maximum属性,以指定范围。编写多个UpgradeVersion元素以指定多个版本范围。

如果不希望2.x“感知”1.x(即忽略它、不关心它等),则需要为2.x使用新的GUID

我使用以下代码,仅当我希望新版本忽略以前安装的版本(例如,在不同文件夹中并排存在)时才更改
var.Property\u UpgradeCode



谢谢!应该很明显。不过,我很想使用MajorUpgrade并更改升级代码(正如saschabeaumont的回答所建议的)。这种方法有什么缺点吗?根据您的要求没有缺点。谢谢!我很想使用这个解决方案,因为我可以让MajorUpgrade为我处理一切。我只是不确定这个解决方案是否有严重的缺点。还有一件事:AllowSameVersionUpgrades对你来说怎么样?文档讨论了严重bug的可能性……如果不更改前三位中的一位,我不会建议公开发布。然而AllowSameVersionUpgrades使测试/质量保证团队的工作变得更加轻松-我们遇到了一些bug,没有什么不能通过完全删除/重新安装和重新启动来修复的。
<Product Id="*"
         UpgradeCode="$(var.Property_UpgradeCode)"
         Name="!(loc.ApplicationName)"
         Language="!(loc.Property_ProductLanguage)"
         Version="$(var.version)"
         Manufacturer="!(loc.ManufacturerName)" >

<MajorUpgrade AllowSameVersionUpgrades="yes"
          DowngradeErrorMessage="!(loc.LaunchCondition_LaterVersion)"
          MigrateFeatures="no"
          Schedule="afterInstallInitialize" />