WIX XmlConfig VerifyPath 转义

Posted

技术标签:

【中文标题】WIX XmlConfig VerifyPath 转义【英文标题】:WIX XmlConfig VerifyPath escaping 【发布时间】:2017-10-19 14:51:36 【问题描述】:

我正在使用 WIX 在文件中添加 XML 元素。当我的 util:XmlConfig 元素具有这样的 VerifyPath 属性时:

VerifyPath="/configuration/App/add[@key='ApiURL']"

什么也没发生。现在我把它改成了这样(基于我在代码库其他地方找到的一些其他代码):

VerifyPath="/configuration/App/add[\[]@key='ApiURL'[\]]"

并且它正确地添加了元素。这是什么转义,为什么有必要?

【问题讨论】:

【参考方案1】:

我试图独立地找出与您相同的问题的答案,我找到了回答您问题的线索here。这个 *** 答案让我想到了这个 document 关于 Windows Installer 中的格式化类型。

我已经复制了下面的相关文本,但简而言之,"[\[]" 是您获得文字 "[" 字符的方式。

如果找到 [\x] 形式的子字符串,则将其替换为字符 x ,其中 x 是一个字符,无需任何进一步处理。只保留反斜杠后的第一个字符;其他所有内容都被删除。例如,要包含文字左括号 ([),请使用 [\[]。文本 [\[]Bracket Text[\]] 解析为 [Bracket Text]。

【讨论】:

【参考方案2】:

如果我正确理解了 XPath 规范以及它在 Wix 工具集中如何为我工作,这些字符表明工作将使用 add 属性完成,其中有一个值 键

<configuration>
    <App>
        <add key='ApiURL'/>
    </App>
</configuration>

但我们需要朝这个方向看。我自己也没有找到具体的。

【讨论】:

我认为您正确理解了第一个示例中准确的 XPath 规范。第二个示例不是 XPath,但需要此代码才能运行。奇怪的转义应该会破坏我不理解的 XPath。

以上是关于WIX XmlConfig VerifyPath 转义的主要内容,如果未能解决你的问题,请参考以下文章

Wix XmlConfig 验证路径行为

错误 0x8007007a:无法复制 XmlConfig 记录 ID

wix的WIX简介

Wix 3.0正式发布

wix上可以修改别人的网站吗

WiX 技巧和窍门