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 "$INSTDIRDemo" File /r "D:SetupNSISSrcDemo*.*" Sleep 500 nsisXML::create nsisXML::load $INSTDIRDemoWeb.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 "$INSTDIRDemoWeb.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使用的所有内存都将被释放。 (因此通常这不是大问题)