使用WiX添加具有相似名称的XML节点

时间:2011-11-22 09:56:50

标签: xml xpath wix windows-installer wix3

我们有一个以下形式的配置文件:

<Container>
    <Item>
        <name>Text</name>
    </Item>
    <Item>
        <name>MoreText</name>
    <Item>
</Container>

并希望使用XMLFile或XMLConfig添加更多项目/名称节点。虽然我可以添加一个新的空Item节点,但我无法选择该节点本身来添加所需的名称子节点。我尝试过使用:

ElementPath="/Container/Item[\[]last()[\]]"

创建新的Item节点后,但WiX无法找到它。

我完全离开了墙吗?

2 个答案:

答案 0 :(得分:1)

只是猜测但问题可能是默认的选择语言。 IIRC,旧的“XSLPattern”选择语言是默认语言,不支持last()XmlFile可让您设置语言。看起来像XmlConfig上的疏忽。

答案 1 :(得分:0)

最后,我不得不对各种编号的s进行硬编码,并使用序列号来确保顺序正确:

<util:XmlConfig Id="NewItem1" Action="create" File="[DIR]\Item.config" ElementPath="/Container" Name="Item" Node="element" On="install" Sequence="50" />
<util:XmlConfig Id="NewName1" Action="create" File="[DIR]\Item.config" ElementPath="/Container/Item[\[]2[\]]" Name="name" Value="MoreText1" Node="element" On="install" Sequence="51" />
<util:XmlConfig Id="CreatePRAlertEmailNode"  Action="create" File="[DIR]\Item.config" ElementPath="/Container" Name="Item" Node="element" On="install" Sequence="52" />
<util:XmlConfig Id="CreatePRAlertEmailName"  Action="create" File="[DIR]\Item.config" ElementPath="/Container/Item[\[]3[\]]" Name="name" Value="MoreText2"  Node="element" On="install" Sequence="53" />
<util:XmlConfig Id="CreatePRAlertRSSNode"    Action="create" File="[DIR]\Item.config" ElementPath="/Container" Name="Item" Node="element" On="install" Sequence="54" />
<util:XmlConfig Id="CreatePRAlertRSSName"    Action="create" File="[DIR]\Item.config" ElementPath="/Container/Item[\[]4[\]]" Name="name" Value="MoreText3"    Node="element" On="install" Sequence="55" />

它不理想,如果端点发生变化则需要更改,但现在可以使用。