Wix: Как ограничить основные обновления номерами основных версий? - PullRequest
7 голосов
/ 07 сентября 2011

Мне нужно следующее поведение от моих установщиков на основе 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 ]

6 голосов
/ 08 сентября 2011

Вам нужно использовать NEW GUID для 2.x, если вы не хотите, чтобы он «знал» о 1.x (то есть игнорировать его, все равно и т. Д.)

Я использую следующий код, меняя 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" />
3 голосов
/ 08 сентября 2011

Поместите атрибуты @Minimum и @Maximum в один элемент UpgradeVersion, чтобы указать диапазон. Создайте несколько элементов UpgradeVersion, чтобы указать несколько диапазонов версий.

...