Добавление узлов XML с похожими именами с использованием WiX - PullRequest
1 голос
/ 22 ноября 2011

У нас есть файл конфигурации вида:

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

и хотите добавить больше узлов Item / Name, используя XMLFile или XMLConfig. Несмотря на то, что я могу добавить новый пустой узел Item, я не могу выбрать сам этот узел, чтобы добавить необходимый подузел имени. Я пытался использовать:

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

После создания нового узла Item, но WiX не может его найти.

Я полностью сошел со стены?

Ответы [ 2 ]

1 голос
/ 25 ноября 2011

Просто угадай, но проблема может быть в том, что язык выбора по умолчанию.IIRC, старый язык выбора "XSLPattern" является языком по умолчанию и не поддерживает last().XmlFile позволяет вам установить язык.Похоже на недосмотр XmlConfig.

0 голосов
/ 24 ноября 2011

В конце концов мне пришлось жестко закодировать различные пронумерованные 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" />

Это не идеально, и его нужно изменить, если конечная точка изменится,пока работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...