Я использую WiX для создания базы данных установки Windows для своего приложения.У меня есть файл XML, который устанавливается вместе с моим приложением, который должен быть заполнен информацией, полученной во время установки.Теги WiXUtilExtension util: XmlFile и util: XmlConfig в принципе являются отличными способами сделать это, но они не совсем решают мою проблему.В частности, мне нужно вставить некоторый javascript:
<?js
//some javascript that must include formatted string properties
//so that [PropertyName] evaluates to its value during installation
?>
, но с этим текстом в качестве значения атрибута util: XmlFile / @ Value он не скомпилируется (неудивительно - ошибка CNDL0104).И ни обратная косая черта, ни [\] (escape-последовательность для квадратных скобок), по-видимому, не экранируют символы больше или меньше.
Я также попытался поместить вставленный текст во внутренний текст элемента util: XmlConfig, но при наличии тега Javascript он просто игнорирует текст.Обтекание внутреннего текста в тегах CDATA вставляет текст, но заменяет символы «больше» и «меньше» их сущностями «& gt;»и "& lt;", без кавычек и пробелов.
В чем прикол?
РЕДАКТИРОВАТЬ: Все еще борется с этой проблемой, но некоторые дополнительные детали могут помочь прояснить дальнейшие.Вот пример XML-файла со структурой, которую мне нужно изменить при установке.
<?xml version="1.0"?>
<RootElement>
<SubElement>
<?js
//insert Javascript here with formatted property values e.g. [PropertyName]
?>
</SubElement>
</RootElement>
В моем коде WiX я имел:
<util:XmlConfig Id="EditXml" File="foo.xml" Action="create" Node="value" On="install" ElementPath="//RootElement/SubElement" Sequence="1" >
<![CDATA[//the Javascript code]]>
</util:XmlConfig>
, который, конечно, поместилтекст рядом с инструкцией по обработке Javascript, а не внутри нее.Поэтому я изучил теги инструкций обработки XML с помощью XPath , полагая, что, возможно, я не использовал правильное значение для атрибута util: XmlConfig / @ ElementPath.Я никогда раньше не использовал XPath, но думал, что сработает одно из следующих изменений:
ElementPath="//RootElement/SubElement/processing-instruction('js')"
ElementPath="processing-instruction('js')//RootElement/SubElement"
ElementPath="//processing-instruction('js')"
ElementPath="processing-instruction('js')"
, но безрезультатно.Я просто не согласен с этим синтаксисом, или есть другое решение?
Заранее спасибо за помощь!