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 以在卸载期间更改行为的正确方法是什么?似乎参数只是被忽略了。

4

1 回答 1

1

默认情况下,卸载期间不会评估组件条件。这是一个类似的Stackoverflow 问题,来自 Rob Mensching 的回答。他建议使用 Transitive 属性。从文档

如果此属性设置为“yes”,安装程序会在重新安装时重新评估 Condition 中语句的值。如果该值以前为 False 并已更改为 True,则安装程序会安装该组件。如果该值以前为 True 并已更改为 False,则安装程序会删除该组件,即使该组件有其他产品作为客户端也是如此。

于 2013-11-22T07:38:46.767 回答