Фил уже ответил. Я просто выложу то, что написал несколько часов назад
прежде чем отправиться Условия, которые вы укажете, выглядят довольно хорошо для меня.
Может быть, я сделаю краткий обзор вещей, которые могут вызвать
путаница - например, какие настраиваемые действия выполняются, когда?
Основные обновления : Серьезное обновление - это, по сути, установка новой версии приложения в сочетании с удалением старой версии - возможно другое планирование удаления (удаление старой и установка новой , или установите новый и удалите старый). Следовательно, во время основной операции обновления 1)
последовательность удаления выполняется только для старой установки , а 2)
запускается новая установка только его последовательность установки . Это крайне важно для понимания того, какие настраиваемые действия выполняются, когда и почему.
Настраиваемые действия и основные обновления : Другими словами: эта последовательность может привести к путанице при настройке последовательности пользовательских действий, поскольку может показаться, что действие выполняется из новой установки, когда он фактически выполняется в последовательности удаления старой установки. Если вы неуклюжи с последовательностью, типичная ошибка заключается в том, что одно и то же действие запускается много раз во время процесса обновления - возможно, дважды с каждой установки (всего четыре раза) - если вы запускаете настраиваемое действие в немедленном режиме.
Никакого дооснащения для основных обновлений : Как объясняет Фил, вы не можете добавить пользовательское действие, которое будет выполняться во время последовательности удаления старой установки, внутри новой установки. Это пользовательское действие должно было быть частью первоначальной настройки или добавлено путем незначительного обновления (которое обновляет существующую установку на месте, а не удаляет и переустанавливает ее).
Важно
UPGRADINGPRODUCTCODE
устанавливается только в настройках, которые удаляются в рамках крупного обновления. не установлено в новой устанавливаемой версии.
- Условие
UPGRADINGPRODUCTCODE
, следовательно, не соответствует действительности в установке установки, только в установке удаления .
WIX_UPGRADE_DETECTED
устанавливается только в настройках, использующих элемент MajorUpgrade WiX, которые обнаружили, что другая версия удаляется в процессе установки.
- Условие
WIX_UPGRADE_DETECTED
, следовательно, true в установке установки, но не в установке удаления .
WIX_UPGRADE_DETECTED : Если говорить более подробно, WIX_UPGRADE_DETECTED
, строго говоря, не пользовательская функция WiX - это стандарт WiX или соглашение для установка встроенного свойства MSI ActionProperty
для процесса обновления. Все файлы MSI, поддерживающие крупные обновления, имеют такое свойство, WiX просто называет его стандартным образом. Это свойство задается в столбце в таблице Upgrade , и это свойство устанавливается, когда установка находит связанные продукты - более ранние версии (и, следовательно, подлежащие удалению) - в том же окне во время установка.
WIX_DOWNGRADE_DETECTED : обратите внимание, что в стандартном MSI, скомпилированном с WiX и использующим элемент MajorUpgrade, также есть WIX_DOWNGRADE_DETECTED
- свойство, используемое для вывода списка найденных продуктов более высокой версии, чем текущая настройка. Это блокирует установку, о которой идет речь, в большинстве случаев (если параметры не настроены дизайнером установки).
Свойством действия, указанным в таблице обновлений, может быть «что угодно», но «удобная функция» MajorUpgrade делает это для вас «автоматическим» способом, который имеет смысл для большинства целей - используя упомянутые имена свойств WIX_UPGRADE_DETECTED
и WIX_DOWNGRADE_DETECTED
. Проверьте Upgrade Table вашего скомпилированного MSI, чтобы увидеть, как это работает в деталях. Вот снимок экрана:
Я написал этот другой ответ, показывающий, как использовать другое имя свойства (YOURUPGRADEPROPERTY
) в качестве "ActionProperty
": диалог обновления и процесса установки установщика wix (связанный ответ не является рекомендацией, демонстрация только). Просто ссылка, вероятно, не очень полезная для вас сейчас, когда я об этом думаю.
Некоторые ссылки :