【问题标题】:Adding XML nodes with similar names using WiX使用 WiX 添加具有相似名称的 XML 节点
【发布时间】:2011-11-22 09:56:49
【问题描述】:
我们有一个如下形式的配置文件:
<Container>
<Item>
<name>Text</name>
</Item>
<Item>
<name>MoreText</name>
<Item>
</Container>
并且想要使用 XMLFile 或 XMLConfig 添加更多的 Item/Name 节点。虽然我可以添加一个新的空 Item 节点,但我无法选择该节点本身来添加所需的名称子节点。我试过使用:
ElementPath="/Container/Item[\[]last()[\]]"
创建新的Item节点后,WiX找不到它。
我已经完全脱离了墙吗?
【问题讨论】:
标签:
xml
xpath
wix
windows-installer
wix3
【解决方案1】:
只是猜测,但问题可能在于默认选择语言。 IIRC,旧的“XSLPattern”选择语言是默认语言,不支持last()。 XmlFile 让您设置语言。看起来像是对XmlConfig 的疏忽。
【解决方案2】:
最后我不得不对各种编号的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" />
这并不理想,如果端点发生变化需要更改,但现在可以。