Wix: Могу ли я наложить условие на элемент RemoveFolderEx для запуска только при удалении программы? - PullRequest
4 голосов
/ 23 ноября 2011

Я пытаюсь удалить иерархию папок с помощью RemoveFolderEx, но только при удалении программного обеспечения.В настоящее время, когда я делаю переустановку, она также удаляет все папки, что удаляет весь созданный программой контент, что нежелательно.Возможно, это связано с тем, что я установил программное обеспечение для удаления перед повторной установкой

<InstallExecuteSequence>
    <RemoveExistingProducts Before="InstallInitialize" />      
</InstallExecuteSequence>

Возможно ли наложить условие на следующий элемент?Должен ли я обернуть его в свой собственный компонент, а затем добавить условие внутри?Пока я не смог заставить его работать.

<util:RemoveFolderEx On="uninstall" Property="MAINDIR" ></util:RemoveFolderEx>

Из другого вопроса я знаю, что условие должно быть

((NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL"))

, но я не совсем на 100%о том, как применить это к элементу removefolder, если это вообще возможно.

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

Ура.Нил


РЕДАКТИРОВАТЬ: я почти получил эту работу, поместив removefolderex в его собственный компонент.Без условия это работает как ожидалось и удаляет каталог данных при удалении и переустановке.Когда я добавляю условие, оно не запускается, но я надеюсь, что это связано с тем, что условие неверно.

<DirectoryRef Id="DATADIR">        
    <Component Id="C.RemoveDataFolder" Guid="myguid" KeyPath="yes">
        <util:RemoveFolderEx On="uninstall" Property="DATADIR" ></util:RemoveFolderEx>
        <Condition>(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")</Condition>
    </Component>
</DirectoryRef>

Кто-нибудь знает, нормально ли приведенное выше заявление или оно никогда не сработает?Могу ли я применить такое условие к компоненту?

Ответы [ 2 ]

4 голосов
/ 24 ноября 2011

RemoveFolderEx привязан к компоненту, поэтому, если он удаляется и RemoveFolderEx / @ On = "uninstall", RemoveFolderEx сделает свое дело.Там нет поддержки для добавления другого условия, но это кажется разумным;Пожалуйста, отправьте запрос о функции , чтобы он был в списке задач.

0 голосов
/ 25 ноября 2011

Состояние компонента определяет, установлен ли компонент. Это условие ложно при установке, поэтому компонент не установлен. Естественно, при удалении он не удаляется, поэтому операция удаления не работает. Я бы пошел с пользовательским действием, которое устанавливает целевое свойство условно.

...