У меня есть установщик WiX, который имеет пользовательские действия на функцию, которые должны быть выполнены на удалении. Прямо сейчас я сталкиваюсь с проблемой, где действия выполняются, была ли функция на самом деле установлена пользователем. Пользовательские действия перестали работать, потому что они ожидают, что определенные ресурсы будут существовать, и затем вся установка застревает в нарушенном состоянии.
Что корректный путь состоит в том, чтобы выполнить пользовательское действие, если и только если его связанная функция удаляется? Я включал отрывок, который я в настоящее время использую ниже, если он помогает.
<Custom Action="LaunchUninstallCustomAction" Before="RemoveFiles"><![CDATA[(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL") AND (&FeatureName<=2)]]></Custom>
Попробуйте
<Custom Action="LaunchUninstallCustomAction" Before="RemoveFiles">
<![CDATA[(NOT UPGRADINGPRODUCTCODE)
AND (&FeatureName=2) AND (!FeatureName=3)]]>
</Custom>
См. MSDN для подробностей синтаксиса условий и примеров
Похоже, пользовательские действия не работают и неправильно обрабатывают недостающие ресурсы.
Как ЦС справится с этим, если пользователь вручную удалит файлы? Что произойдет, если пользователь удалит папку приложения, а затем попытается удалить ее через ARP?
Что произойдет, если пользователь просто удалит компонент, не удаляя все приложение? Вам будет лучше, если вы почините CA на длительный срок.