Установщик Wix MSI не удаляет предыдущую версию из «Установка и удаление приложений» при обновлении приложения - PullRequest
1 голос
/ 24 мая 2019

Я создал новый установщик с новой версией и идентификатором продукта без ошибок, но при его установке текущая версия остается установленной, а также обновленная версия.Я использовал это некоторое время для установки и обновления моего приложения на разных машинах, но только недавно оно начало полностью удалять старую версию.Я обновил файл .wxs следующим образом:

1. Changed <Product Id="{F9030CA1-39AD-46BD-B2E2-3DBE02A8845B}".
2. Updated the new version number.

Я не обновил код обновления.Я создал несколько версий установщика, чтобы увидеть, сохраняется ли проблема, и кажется, что это так.Я также обновил расширение Wix для Visual Studio (Votive2019), но не повезло.Не уверен, есть ли ошибка в моем коде или это ошибка.Я даже не уверен, в чем причина этой проблемы.

Ниже приведен фрагмент моего кода из раздела пакета:

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="{F9030CA1-39AD-46BD-B2E2-3DBE02A8845B}" Codepage="1252" Language="1033" Manufacturer="Mi-Plan" Name="FD to Excel" UpgradeCode="{17469B04-7B24-455E-BCB8-CD7AEA97CDCD}" Version="10.0.560">
        <Package Compressed="yes" Description="10.0.560.0" InstallerVersion="200" Languages="1033" Manufacturer="Jwayela Software" Platform="x86" />

Ниже приведен фрагмент моего кода из раздела обновления:

  <Upgrade Id="{A39F99F9-069F-4356-AA6A-5BBBC6DADB29}">
            <UpgradeVersion Maximum="10.0.560" Property="PREVIOUSVERSIONSINSTALLED" />
            <UpgradeVersion Minimum="10.0.560" Property="NEWERPRODUCTFOUND" OnlyDetect="yes" IncludeMinimum="yes" />
        </Upgrade>

Я использую Visual Studio 2019.

Нажмите здесь , чтобы получить полный файл.

1 Ответ

0 голосов
/ 24 мая 2019

Ошибка несоответствия типов : похоже, существует несоответствие между Upgrade element's "Id" value и Upgrade Code Вы указали в Product element?Это могло бы объяснить, почему основное обновление не работает, но не почему оно работает до сих пор?


Элемент основного обновления : будетРекомендуем использовать упрощенный элемент основного обновления, если вам не нужен детальный контроль в таблице обновлений для чего-то особенного.Я только что написал ответ на это несколько часов назад: Невозможно удалить предыдущие версии MSI.Многократные записи отображаются на панели управления .Magixal MajorUpgrade element - эта простая, простая строка выполняет всю работу за вас:

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

Define : еще одинДело в том, что Defines можно использовать для установки значений, которые должны использоваться в разных местах в источнике и должны точно совпадать:

<?define MyProductVersion = "31.00.0000" ?>
<?define MyProductCode = "PUT-GUID-HERE" ?>
<?define MyUpgradeCode = "PUT-GUID-HERE" ?>

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">

  <Product Id="$(var.MyProductCode)" Codepage="1252" Language="1033" Manufacturer="Corp"
           Name="Bla" UpgradeCode="$(var.MyUpgradeCode)" Version="$(var.MyProductVersion)">

   <...>

   <!-- Major upgrade -->
    <Upgrade Id="$(var.MyUpgradeCode)">

      <!-- Downgrade Protection -->
      <UpgradeVersion Minimum="$(var.MyProductVersion)" OnlyDetect="yes" 
                      IncludeMinimum="yes" Property="DOWNGRADE_DETECTED"  />

      <!-- Major Upgrade Configuration -->
      <UpgradeVersion IncludeMinimum="no" Maximum="$(var.MyProductVersion)" 
                      IncludeMaximum="no" MigrateFeatures="yes" Property="UPGRADE_DETECTED" />
    </Upgrade>

</Wix>
...