Пользовательское действие Wix, выполняемое только во время установки, но не при обновлении и удалении?

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

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

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

3) (НЕ УСТАНОВЛЕН) ИЛИ НЕ (УСТАНОВЛЕН И УДАЛИТЬ = "ВСЕ" И UPGRADINGPRODUCTCODE)

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


person Kalyani Reddy    schedule 09.01.2020    source источник
comment
Это настраиваемое действие немедленного режима?   -  person Stein Åsmul    schedule 09.01.2020


Ответы (1)


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

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

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

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

Совет: 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.

person Stein Åsmul    schedule 09.01.2020
comment
Я вижу, что скоро появится WIX v4, можем ли мы сделать эти условия более читаемыми, например, IsNotInstalled, IsInstalled, IsMinorUpgrade, IsMajorUpgrade что-то в этом роде. Потому что сейчас я пытаюсь выяснить, что означает NOT REMOVE = "ALL" ;-) И вы можете внутренне сопоставить это с чем угодно. - person Legends; 19.07.2020
comment
Отлично, попробуйте те окна сообщений VBScript, которые помогут отладить различные режимы установки. Их много. - person Stein Åsmul; 05.09.2020