WiX:如何在没有条件的情况下删除相同类型的所有节点元素

时间:2016-10-11 15:54:52

标签: xml xpath wix

假设我们有以下xml片段:

<Computers>
  <PC name="1" />
  <PC name="2" />
</Computers>

我知道我可以使用如下声明删除特定节点:

<util:XmlConfig Id="DeletePCs" 
                Action="delete" 
                On="install" 
                File="[#myfile.config]" 
                Node="element" 
                ElementPath="/Computers" 
                VerifyPath="/Computers/PC[\[]@name='2'[\]]" 
                Sequence="1" />

成功删除第二个PC节点。但是,如果我想用一个XmlConfig声明删除两个节点,我不能。我尝试了将VerifyPath与*的不同组合或留空,但它不做任何事情或失败。

有没有办法做到这一点,或者我需要一个接一个地使用尽可能多的声明,因为需要删除许多元素?

1 个答案:

答案 0 :(得分:0)

暂时没有已知方法从父元素中删除某些类型的元素。可以通过删除父元素并将其添加回来而不嵌套其中的子元素(作为变通方法)来删除父元素的所有子元素。但是,如果需要删除选择性类型的元素并将其他类型的元素保留在父级之下,那么除了从util:XmlConfig节点声明中删除之后,除了一个接一个地删除所选元素之外没有办法WiX中的操作只能从xml文件中删除一个元素。