Wix:我可以在RemoveFolderEx元素上强制条件只在卸载程序时运行吗?

时间:2011-11-23 17:48:07

标签: wix windows-installer

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

<InstallExecuteSequence>
    <RemoveExistingProducts Before="InstallInitialize" />      
</InstallExecuteSequence>

是否可以对以下元素施加条件?我应该将它包装在它自己的组件中,然后在里面添加一个条件吗?到目前为止,我还没能让它上班。

<util:RemoveFolderEx On="uninstall" Property="MAINDIR" ></util:RemoveFolderEx>

从另一个问题我知道条件必须是

((NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL"))

但是,如果可能的话,我不是100%关于如何将它应用于removefolder元素。

我想我可以在自定义操作上设置文件夹的路径为空,该操作受条件限制,但这看起来很糟糕。

干杯。 尼尔


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

有没有人知道上述声明是否正常或者这是否会起作用?我可以将这种条件应用于组件吗?

2 个答案:

答案 0 :(得分:4)

RemoveFolderEx绑定到一个组件,因此如果它被删除并且RemoveFolderEx / @ On =&#34;卸载&#34;然后RemoveFolderEx会做它的事情。没有人支持添加其他条件,但这似乎是合理的;请提交feature request,以便在待办事项列表中显示。

答案 1 :(得分:0)

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