WiX XML修改.config文件时忽略key属性,如何指定修改DatabaseName?
解决WiX修改.config文件中DatabaseName的问题
问题核心在于XPath表达式的写法不符合MSXML语法规范,导致无法准确定位到目标节点。以下是具体的解决方法:
正确的WiX配置修改
将util:XmlFile的ElementPath调整为属性选择器格式(用@标识属性),完整配置如下:
<Component Id="ModifyConfig" > <File Id="AppConfigFile" Source="..path\to\my.config" KeyPath="yes" /> <util:XmlFile Id="SetAppSetting" File="[#AppConfigFile]" Action="setValue" ElementPath="/configuration/settings/add[@key='DatabaseName']" Name="value" Value="somethingElse" /> </Component>
原写法失效的原因
- 你最初使用的
key='DatabaseName'未添加@符号,MSXML无法识别这是属性筛选条件,会默认匹配第一个<add>节点,因此修改了DatabaseServer。 - 若之前尝试过
@key仍有问题,需检查XML节点层级是否完全匹配XPath路径(缩进不影响,但节点嵌套关系必须一致)。
额外注意事项
确保WiX项目已引用WixUtilExtension(util:XmlFile属于该扩展),需在Wix根节点中声明命名空间:
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
内容的提问来源于stack exchange,提问作者Azzarrel
相关产品推荐
相关产品推荐

