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

时间:2011-09-07 13:38:00

标签: wix limit major-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" Property="NEWERVERSIONDETECTED" IncludeMinimum="no" />
        <UpgradeVersion OnlyDetect="no" Maximum="2.0.0.1" Property="OLDERVERSIONBEINGUPGRADED" IncludeMaximum="no" />
    </Upgrade>
    <InstallExecuteSequence>
        <RemoveExistingProducts After="InstallInitialize" />
    </InstallExecuteSequence>

2 个答案:

答案 0 :(得分:6)

如果您不希望它“知道”1.x(即忽略它,不关心等),则需要为2.x使用 NEW GUID < / p>

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

<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" />

答案 1 :(得分:3)

将@Minimum和@Maximum属性放在单个UpgradeVersion元素上以指定范围。创建多个UpgradeVersion元素以指定多个版本范围。