2013-11-21 6 views
1

У меня есть этот фрагмент WiX:Как вы условно удаляете файлы во время удаления?

<Component Id="AppData" Guid="{30967EFB-4B86-4EBB-8486-5271D051082E}"> 
    <Condition>NOT KEEPAPPDATA</Condition> 
    <RemoveFile Id="PurgeAppData" Name="*.*" On="uninstall" /> 
    <RemoveFolder Id="RemoveAppDataFolder" On="uninstall" /> 
</Component> 

в соответствующем <Directory> элементе для каталога под данными приложения, что данные программы хранятся. Однако и

msiexec /xpath-to-msi.msi KEEPAPPDATA="TRUE" 

и

msiexec /xpath-to-msi.msi 

удалить папку, поэтому условие не работает. Я также пробовал это условие:

<Condition>KEEPAPPDATA == ""</Condition> 

с такими же результатами.

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

+0

Вы пытались установить его на «# 1»? – codemonkeh

ответ

1

По умолчанию при удалении условия компонента не оцениваются. Вот аналогичный Stackoverflow question с ответом Роба Меншига. Он предлагает использовать Transitive атрибут. Из documentation:

Если этот атрибут установлен в «да», то программа установки переоценивает значение заявления в Условии после переустановки. Если значение было ранее False и изменилось на True, установщик устанавливает компонент. Если значение было ранее True и изменилось на False, программа установки удалит компонент, даже если компонент имеет другие продукты в качестве клиентов.

+0

Добавление 'Transitive =" yes "' к элементу '', похоже, не имеет никакого значения - файлы все равно удаляются безоговорочно. –

Смежные вопросы