Как вы условно удаляете файлы при удалении?

У меня есть этот фрагмент 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 для изменения поведения во время удаления? Кажется, что параметры просто игнорируются.

1 ответ

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

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

Другие вопросы по тегам