Я обновил старый установщик на основе 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-файла, который не удаляется.