Обновление со старого проекта Wix не приведет к удалению старого экземпляра - PullRequest
1 голос
/ 20 января 2020

Я обновил старый установщик на основе Wix, в котором есть проект создания MSI и проект начальной загрузки (в Visual Studio). Загрузчик упорядочивает MSI с проверкой. Net pre-Requisite / download. Новый проект Wix # просто производит MSI, и он устанавливается и работает отлично, за исключением того, что я не могу заставить его заменить более старые установки. Я установил новый проект UpgradeCode, чтобы он соответствовал тому, что я вижу в старом проекте MSI (и который находится в реестре windows в списке удаления). Я вижу, как код UpgradeCode генерируется в файл WXF. Но когда я не смог заставить это работать, я попытался настроить его так, чтобы он соответствовал UpgradeCode из самоустанавливающегося загрузчика (который запускает конечный пользователь). Это не помогло.

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

            project.MajorUpgrade = MajorUpgrade.Default;

И:

            project.MajorUpgrade = new MajorUpgrade
            {
                Schedule = UpgradeSchedule.afterInstallInitialize,
                AllowDowngrades = true,
                IgnoreRemoveFailure = true,
                AllowSameVersionUpgrades = false
            };

И:

            project.MajorUpgradeStrategy = new MajorUpgradeStrategy
            {
                RemoveExistingProductAfter = Step.InstallInitialize,
                UpgradeVersions = new VersionRange
                {
                    Maximum = project.Version.ToString(),
                    IncludeMaximum = false,
                    MigrateFeatures = false
                },
                PreventDowngradingVersions = new VersionRange
                {
                    Minimum = project.Version.ToString(),
                    IncludeMinimum = false
                },
                NewerProductInstalledErrorMessage = "A newer version of [ProductName] is already installed. Setup will now exit."
            };

И различные варианты этих темы. Ничто из того, что я сделал, не повлияло на поведение, то есть после установки старая и новая версии приложения перечислены в списке добавления / удаления Windows. Есть ли какой-нибудь пропущенный секретный соус для этого пути миграции?

ОБНОВЛЕНИЕ:

Я понял, что моя последняя попытка фрагмента на самом деле работает *. Это вызывает удаление всего, кроме записи в Windows программах добавления / удаления! Может ли это быть связано с изменением имени приложения в новом установщике? Или, может быть, он каким-то образом остается из-за старого загрузчика, так как я использую UpgradeCode из старого MSI и не делаю ничего определенного c с загрузчиком?

UPDATE2:

«Старый» установщик имеет версию MSI и EXE (загрузчик) установки. Если я просто установить с помощью старого MSI, а затем запустить новый MSI, все работает отлично. Похоже, что это связано с запуском загрузочного EXE-файла, который не удаляется.

...