Я создаю установщик с exe-файлом, который нужно вызывать только во время первой установки. При любом обновлении пользовательское действие не должно вызываться.
<CustomAction Id="MyExe"
Directory="INSTALLFOLDER"
ExeCommand=""[INSTALLFOLDER]MyExe.exe" /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.