Мы меняем наш инструментарий установщика из NSIS на WiX, и я хочу использовать CustomAction
для удаления старых версий нашей программы, если это необходимо. Для этого мне нужно вызвать старый деинсталлятор с повышенными привилегиями до того, как будут установлены новые компоненты.Выполнение CustomAction с повышенными привилегиями в WiX (синхронно или с asyncWait)
Я использую следующие в моем файле WXS:
<CustomAction Id="RemoveLegacyProduct" Directory="ProgramFilesFolder" ExeCommand="[PROP_LEGACYUNINSTALLER]" Execute="deferred" Impersonate="no" Return="asyncWait"/>
<InstallExecuteSequence>
<Custom Action="RemoveLegacyProduct" After="InstallInitialize"><![CDATA[PROP_LEGACYUNINSTALLER AND NOT REMOVE]]></Custom>
</InstallExecuteSequence>
Проблема, что я в настоящее время является то, что asyncWait
не похоже на работу. Мой старый деинсталлятор запускается и до его завершения установка уже продолжается (она заканчивается еще до завершения удаления).
Как создать настраиваемое действие, которое выполняется синхронно (или, по крайней мере, установка ждет, пока действие не будет завершено)? Или есть лучший способ сделать то, что я пытаюсь?
Я пробовал все эти и никто не работал. Деинсталлятор всегда запускается параллельно с моей установкой. – fschoenm