Пользовательское действие Wix, которое нужно выполнить только во время установки, но не при обновлении и удалении - PullRequest
1 голос
/ 09 января 2020

У меня есть пользовательское действие, которое должно выполняться только во время установки, но не во время обновления и удаления второстепенного выпуска? Я пытался с другими условиями, но CA выполняется во время второстепенного выпуска.

1) (НЕ установлен) ИЛИ НЕТ (REMOVE = "ALL" AND UPGRADINGPRODUCTCODE)

2) (НЕ установлен)

3) (НЕ УСТАНОВЛЕНО) ИЛИ НЕТ (Установлено И УДАЛЕНО = "ВСЕ" И UPGRADINGPRODUCTCODE)

, но у меня ничего не работает. И мой ЦС выполняется дважды может быть потому, что во время обновления установка удаляется и устанавливается. Любые предложения, как выполнить CA только во время установки, но не во время обновлений.

1 Ответ

0 голосов
/ 09 января 2020

Пожалуйста, проверьте : Вы можете попробовать (NOT Installed) AND (NOT WIX_UPGRADE_DETECTED) в качестве первого теста ( см. Этот ответ ), а затем использовать подход отладки ниже, чтобы проверить должным образом. Никаких гарантий! Условия общеизвестны.

  • Обычно используемый способ проверки выполнения деинсталляции в рамках основного обновления заключается в использовании свойства UPGRADINGPRODUCTCODE .
  • Вы должны знать о этих выпусках в отношении UPGRADINGPRODUCTCODE - он может вести себя не так, как вы ожидаете по номинальной стоимости.
  • Я предлагаю использовать WIX_UPGRADE_DETECTED вместо UPGRADINGPRODUCTCODE в вышеуказанном условии, чтобы сделать его максимально простым. Это свойство c, определяемое WiX (UPGRADINGPRODUCTCODE - это встроенное свойство MSI).

Top Tip : Условия MSI, как известно, сложны для понимания. Вы можете довольно эффективно отлаживать условия MSI с помощью подхода, описанного здесь: Как выполнить условное пользовательское действие только при установке и изменении? (см. Нижний раздел - с использованием окон сообщений VBScript, а затем запустить установку в различных режимах).

Незначительные улучшения : Учтите, что незначительные обновления очень ограничены - и другой ответ . Пожалуйста, ознакомьтесь с ограничениями, чтобы убедиться, что вы о них знаете, и что вы можете выпускать свое программное обеспечение с учетом этих обстоятельств. Также обязательно проверьте исправление и измените сценарий ios для установщика.

Советы : Often it is better to use the launch sequence of the application to perform application configuration than relying on custom actions since they have complex sequencing, conditioning and impersonation issues.

...