1

我在卸载安装时添加到 XML 文件中的元素时难以删除。这是我的设置: XML 文件在安装前已经存在于机器上,安装后无法删除,因为此安装程序用于应用程序的“加载项”。我确实在安装时向 XML 文件添加了一些元素,但只想在卸载时删除其中一些元素。

我一直在网上寻找答案,找不到适合我情况的答案。我试过复制这篇文章的语法:Deleting XML elements in WiX,但它仍然不起作用。但是,在安装时,我确实删除了现有元素,以便在安装时进行替换(如果元素已经存在)。因此,换句话说,删除一个元素在安装时有效,但具有完全相同的标签(除了Idattr 当然)它不适用于卸载。

这是我的代码:

<Component Id="C_Component" Guid="GUID-HERE">
    <File Id="MainProductFile" ... />
    <!-- XmlConfigs for installation are here -->
    <util:XmlConfig Id="XMLDEL_binding"
              File="[FILE_DIR_PATH]\File.config"
              Sequence="1"
              On="uninstall"
              Action="delete"
              ElementPath="/configuration/system.serviceModel/bindings/customBinding"
              VerifyPath="/configuration/system.serviceModel/bindings/customBinding/binding[\[]@name='!(wix.binding.name)'[\]]"
              Node="element" />
    <util:XmlConfig Id="XMLDEL_endpoint"
              File="[FILE_DIR_PATH]\File.config"
              Sequence="2"
              On="uninstall"
              Action="delete"
              ElementPath="/configuration/system.serviceModel/client"
              VerifyPath="/configuration/system.serviceModel/client/endpoint[\[]@name='!(wix.endpoint.name)' and @bindingConfiguration='!(wix.endpoint.bindingConfiguration)'[\]]"
              Node="element" />
</Component>
4

1 回答 1

1

我终于弄清楚了问题所在。我意识到[FILE_DIR_PATH]卸载没有价值。此属性由 a 获得RegistrySearch。因此,我所要做的就是将属性声明为Secure

<Property Id="FILE_DIR_PATH" Secure="yes">
    <RegistrySearch ... />
</Property>

我发现这可以解决一些问题,同时尝试使用另一个安装程序修复问题。我发现这篇文章很有用:Wix 安装程序在修复.

我还发现 Rob Mensching 的博客文章对这种性质的问题很有用:http ://robmensching.com/blog/posts/2010/5/2/The-WiX-toolsets-Remember-Property-pattern

于 2012-12-18T18:11:52.850 回答