我有这个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)
默认情况下,卸载期间不评估组件条件。这是一个类似Stackoverflow question的回答,来自Rob Mensching。他建议使用Transitive属性。来自documentation:
如果此属性设置为“yes”,则安装程序会在重新安装时重新评估条件中语句的值。如果该值以前为False且已更改为True,则安装程序将安装该组件。如果该值以前为True且已更改为False,则即使该组件具有其他产品作为客户端,安装程序也会删除该组件。