Как выполнить пользовательское действие в WiX, только если установленная функция удаляется? - PullRequest
6 голосов
/ 02 февраля 2010

У меня есть установщик WiX, который имеет индивидуальные действия, которые необходимо выполнить при удалении. Прямо сейчас я сталкиваюсь с проблемой, когда действия выполняются независимо от того, была ли функция фактически установлена ​​пользователем. Пользовательские действия не выполняются, так как они ожидают, что определенные ресурсы существуют, а затем вся установка застревает в неисправном состоянии.

Как правильно запустить настраиваемое действие, если и только если удаляется связанная с ним функция? Ниже приведен фрагмент, который я сейчас использую, если это поможет.

<Custom Action="LaunchUninstallCustomAction" Before="RemoveFiles"><![CDATA[(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL") AND (&FeatureName<=2)]]></Custom>

Ответы [ 2 ]

16 голосов
/ 03 февраля 2010

Попробуйте

<Custom Action="LaunchUninstallCustomAction" Before="RemoveFiles">
   <![CDATA[(NOT UPGRADINGPRODUCTCODE) 
             AND (&FeatureName=2) AND (!FeatureName=3)]]>
</Custom>

См. MSDN для подробностей синтаксиса условий и примеров

0 голосов
/ 03 февраля 2010

Похоже, что пользовательские действия нарушены и неправильно обрабатываются недостающие ресурсы.

Как CA справится с этим, если пользователь вручную удалит файлы? Что произойдет, если пользователь удалит папку приложения, а затем попытается удалить ее через ARP?

Что произойдет, если пользователь просто удалит функцию, не удаляя все приложение? Вам будет лучше в долгосрочной перспективе исправить CA.

...