NOT UPGRADINGPRODUCTCODE оценивается как true при значительном обновлении для настраиваемого действия - PullRequest
1 голос
/ 25 февраля 2020

Я создаю установщик с exe-файлом, который нужно вызывать только во время первой установки. При любом обновлении пользовательское действие не должно вызываться.

<CustomAction Id="MyExe"
              Directory="INSTALLFOLDER"
              ExeCommand="&quot;[INSTALLFOLDER]MyExe.exe&quot; /arg"
              Execute="deferred"
              Return="ignore"
              Impersonate="no"
             />    

, а последовательность / условие задаются как:

<InstallExecuteSequence>
  <DeleteServices>NOT UPGRADINGPRODUCTCODE</DeleteServices>
  <Custom Action='MyExe' After='InstallFiles' >(NOT Installed) AND (NOT UPGRADINGPRODUCTCODE)</Custom>      
</InstallExecuteSequence>

Обнаруженное мной поведение:

  • При первой установке - Действие запущено
  • При обновлении - Действие Выполнить <- Я не хочу, чтобы оно запускалось здесь </strong>
  • При удалении - Действие не выполняется

В журнале установки MSI я вижу, что установлен код обновления продукта. Я не уверен, как определить из журналов, думает ли он, установлен он или нет. Я попытался изменить «NOT UPGRADINGPRODUCTCODE» на «UPGRADINGPRODUCTCODE», а затем CA не запускался при обновлении. Но он также не запускался при первоначальной установке.

Неправильно ли я устанавливаю условие для запуска при первоначальной установке?

Использование Wix 3.11.

1 Ответ

1 голос
/ 25 февраля 2020

Основные улучшения и условия : Пожалуйста, прочитайте этот ответ . Что вам нужно, так это то, что главное обновление состоит в следующем: 1) последовательность удаления старого продукта и 2) установка нового - с различия в том, в каком порядке это происходит. Следовательно, одна установка является деинсталляцией, а другая установка. Вы можете использовать подход отладки, описанный здесь, чтобы проверить условия .

По существу:

  • UPGRADINGPRODUCTCODE устанавливается только в настройке это удаляется как часть крупного обновления. Не устанавливается в новой устанавливаемой версии. Следовательно, условие UPGRADINGPRODUCTCODE неверно в установочной установке, только в установке удаления.
  • WIX_UPGRADE_DETECTED устанавливается только в установках, использующих WiX Элемент MajorUpgrade, обнаруживший, что другая версия удаляется в процессе установки. Следовательно, условие WIX_UPGRADE_DETECTED выполняется при установке, но не при деинсталляции.

Запуск приложения : Очень часто вещи, которые вы запускаете как часть установки, могут быть запущены при первом запуске приложения. Очень значительно проще с точки зрения отладки и тестирования (знакомый контекст, без олицетворения, без упорядочения, без согласования, тот же источник в качестве основного приложения и простой пошаговый этап отладки). Короче говоря: гораздо надежнее и проще в управлении. Преимущества также для команд QA, которые могут использовать его для тестирования «чистых сланцев» и / или обновления сценария ios.

...