如何使用Inno Setup修改app.config配置文件中指定key的value值
问题根因
你最初使用的XPath路径//configuration/appSettings[@key='DefaultUrl']的作用是查找带有key=DefaultUrl属性的<appSettings>节点,但从你给出的config文件结构来看,key属性是定义在<appSettings>的子节点<add>上的,所以查询无法匹配到任何节点,返回空的XMLNode变体,调用setAttribute方法时自然就抛出"Variant is null, cannot invoke"异常。
正确XPath写法
要定位到key为DefaultUrl的<add>节点,需要在路径中补充<add>节点层级,正确路径如下:
//configuration/appSettings/add[@key='DefaultUrl']
正确调用示例
你后续调试出的调用方式完全符合要求:
SaveAttributeValueToXML('Some_Application.exe.config', '//configuration/appSettings/add[@key=''DefaultUrl'']', 'value', 'https://Server_Name/Other_Application');
补充注意事项
- Inno Setup的Pascal语法中,字符串内的单引号需要用两个单引号转义,所以XPath里的
@key='DefaultUrl'要写成@key=''DefaultUrl'' - 如果你的config文件带有XML命名空间(部分版本的.NET配置文件默认会带xmlns属性),需要提前给DOM对象设置命名空间前缀才能正常查询,你当前示例的XML没有命名空间,不需要额外处理。
内容的提问来源于stack exchange,提问作者Markku Rintala
相关产品推荐
相关产品推荐

