Не удалось выполнить крупное обновление : при появлении двух записей в окне «Установка и удаление программ» основное обновление завершилось неудачно (как правило).
Config : необходимо исправить конфигурацию таблицы обновлений .Минимальная разметка WiX для таблицы обновления по умолчанию - с обычными параметрами (которые выглядят хорошо, см. Скриншот ниже) - всего лишь:
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
Dangling Version: также возможно, что с вашей разметкой WiX все в порядке, и у вас есть свисающая более старая версия, которая никогда не была правильно настроена, если это так, удалите ее вручную и попробуйте снова или попробуйте на чистом виртуальном.
Контекст установки : файлы MSI можно устанавливать для каждого пользователя или для каждого компьютера.Если у вас есть установка для пользователя, а затем запустите установку для компьютера, она не обнаружит предыдущую версию.У вас есть какие-либо жестко запрограммированные ссылки на ALLUSERS в вашей упаковке?
ProductVersion : Возможно, не было ни одного повышения илибольше первых 3 цифр в версии продукта (четвертое поле игнорируется).
Дополнительные сведения : некоторые дополнительные сведения, которые следует запомнить:
ОсновныеОбновление - это, по сути, удаление старой версии и установка новой версии с рядом параметров планирования для порядка, в котором выполняются действия (сначала установите новую, а затем удалите старую или наоборот).
Как указывалось выше, у вас также может быть испорченная старая версия установки на коробке, которая не была должным образом сконфигурирована, или произошла какая-то ерунда X-Files, которая предупреждает об отказе при обновлении.Бывает.
Кривая обучения WiX : Предложите использовать некоторые образцы, чтобы ускорить процесс обучения.Единственное, что действительно помогает? Вот несколько советов по быстрому запуску WiX .Там есть образцы ссылок.
Минимальный образец WiX : есть этот старый образец: Прозрачный алюминий .По сути, пошаговое руководство по использованию Votive для создания установщика на основе WiX.Включает основной элемент обновления.Я считаю, что эта простая конфигурация добавляет защиту от понижения, к которому вы стремитесь:
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
См. Таблицу обновлений , которая дает:
Контрольный пример : Используя прозрачный алюминий в качестве тестового проекта, вы можете попробовать эту процедуру, чтобы заставить работать обновление:
- Установите код продукта на
*
, чтобы автоматически создавать новый код продукта для каждой сборки ("<Product Id="*" ..."
). - Скомпилируйте первую версиюВаш MSI. Щелкните правой кнопкой мыши проект WiX в представлении решения в
Visual Studio
и выберите Open Folder in File Explorer
. В bin
и Debug
или Release
. - Переименуйте скомпилированный MSI, добавив _1 в конец имени файла. Например: MySetup_1.msi
- Теперь поднимите одиниз первых 3 цифр поля версии продукта в источнике WiX:
<Product Id="*" ... Version="2.0.0"
- Скомпилируйте новый MSI и переименуйте его: MySetup_2.msi
- УстановитеMSI-файлы, начиная с версии 1, а затем второй.Убедитесь, что основное обновление выполнено успешно.
Advanced : здесь приведена демонстрация усовершенствованного способа настройки основных обновлений с использованием комбинации вспомогательного элемента "MajorUpgrade"
и более старые "Upgrade"
элементы (которые позволяют более детально контролировать итоговую таблицу обновлений):
Добавление записейв MSI UpgradeTable для удаления связанных продуктов
А вот пример использования только более старых элементов Upgrade, что приводит к большей работе, но полный контроль над таблицей Upgrade: Major Upgrade -«Старый, ручной путь» .
Ссылки :