Wix:我可以对RemoveFolderEx元素施加一个条件,使其仅在卸载程序时运行吗?

Wix:我可以对RemoveFolderEx元素施加一个条件,使其仅在卸载程序时运行吗?,wix,windows-installer,Wix,Windows Installer,我试图使用RemoveFolderEx删除文件夹层次结构,但仅在卸载软件时。目前,当我重新安装时,它也会删除所有文件夹,这会删除所有程序创建的不需要的内容。这可能是因为我已将软件设置为在重新安装之前卸载 <InstallExecuteSequence> <RemoveExistingProducts Before="InstallInitialize" /> </InstallExecuteSequence> 但如果可能的话,我对如何将其

我试图使用RemoveFolderEx删除文件夹层次结构,但仅在卸载软件时。目前,当我重新安装时,它也会删除所有文件夹,这会删除所有程序创建的不需要的内容。这可能是因为我已将软件设置为在重新安装之前卸载

<InstallExecuteSequence>
    <RemoveExistingProducts Before="InstallInitialize" />      
</InstallExecuteSequence>
但如果可能的话,我对如何将其应用于removefolder元素还不是100%

我想我可以在自定义操作中将文件夹的路径设置为空,这取决于条件,但这似乎有点骇客

干杯。 尼尔


编辑:通过将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>

(不升级ProductCode)和(REMOVE=“ALL”)

有人知道上面的声明是正确的还是永远不起作用?我可以将这种条件应用于组件吗?

RemoveFolderEx与组件绑定,因此,如果正在删除该组件,并且RemoveFolderEx/@On=“uninstall”,则RemoveFolderEx将执行其操作。没有人支持增加另一个条件,但这似乎是合理的;请提交一个文件,以便它位于待办事项列表中。

组件条件控制是否安装了组件。此条件在安装时为假,因此未安装组件。卸载时,它自然不会被删除,因此删除操作不起作用。我将使用一个自定义操作,有条件地设置目标属性。

谢谢,我已经添加了一个要添加的功能请求。
((NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL"))
<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>