NSIS 修改更新XML配置文件

NSIS安装程序后,修改*.config配置文件内容,例如Web应用程序的Web.config文件或者其它的xml文件。

需要使用到一个插件,nsisXML.dll

nsisXML是一个小的NSIS插件,可让您使用Windows MSXML库 来处理XML数据

通常,您可以将其用于:

  • 创建,读取,修改,写入XML文件
  • 创建,删除,搜索XML节点
  • 设置/获取节点的内容或属性

如果没有该插件,这里是下载链接:nsisXML 1.4 

作者的个人网站地址:http://wiz0u.free.fr/prog/nsisXML/

作者的个人网站上有关于该插件的详细使用方法的介绍和一些示例,也有其它一些有用插件的分享,有需要的可以直接过去看下。

 

如何使用?

下面给一个示例,在你的安装区段中使用,如果是要修改更新你安装的文件,则需要在复制文件的指令之后使用该插件。

Section "main" sec1
    ; ……
    SetOutPath "$INSTDIR\Demo"
    File /r "D:\Setup\NSIS\Src\Demo\*.*"
    Sleep 500
    nsisXML::create
    nsisXML::load $INSTDIR\Demo\Web.config
    nsisXML::select '/configuration/connectionStrings/add[@name="Default"]'
    nsisXML::setAttribute "connectionString" "Data Source=$DB_SERVERNAME;port=3306;Initial Catalog=Demo;user id=$DB_LOGINNAME;password=$DB_LOGINPASSWORD;SslMode=None;"
    nsisXML::select '/configuration/connectionStrings/add[@name="MongoDB"]'
    nsisXML::setAttribute "connectionString" "mongodb://$DB_SERVERNAME:27017/Demo"
    nsisXML::select '/configuration/connectionStrings/add[@name="Abp.Redis.Cache"]'
    nsisXML::setAttribute "connectionString" "$DB_SERVERNAME:6379,connectTimeout=5000,syncTimeout=25000,responseTimeout=30000"
    nsisXML::save "$INSTDIR\Demo\Web.config"
    nsisXML::release $0
    ; ……
SectionEnd

下面对操作指令做一个简单的解析:

  • nsisXML::create 首先必须在内存中先创建一个空的xml文件,该指令在内存中创建一个空的XML文档,并在$0和$1中返回其引用。
  • nsisXML::load <文件名> 将给定的XML文件加载到文档$0中,要求已在$0中创建XML文档,所以必须先create(如果XML文档$0不为空,则所有内容将被丢弃)。
  • nsisXML::select <XPath表达式> 查找与给定XPath表达式匹配的第一个节点并返回其$1和$2中的参考,如果找不到,参考将为0。
  • nsisXML::setAttribute <属性名称> <值> 在节点$2上使用给定值设置给定属性,执行此操作前一个指令一般为select指令,定位到指定节点然后在设置该节点的属性值。
  • nsisXML::save <文件名> 将当前文档$ 0保存到给定文件。
  • nsisXML::release <节点参考> 立即释放与给定节点关联的内存(通常为$2,$1或$0),对于每个返回节点引用的nsisXML函数,您可能需要释放使用完参考后,它的内存。 但是,请注意,无论如何,安装程序终止时,MSXML使用的所有内存都将被释放。 (因此通常这不是大问题)
 
 
 
 

 

posted @ 2020-11-05 21:19  NanKingQG  阅读(1302)  评论(0)    收藏  举报