zoukankan      html  css  js  c++  java
  • 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 "$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使用的所有内存都将被释放。 (因此通常这不是大问题)
     
     
     
     
  • 相关阅读:
    centos安装elasticsearch-rtf5.5.4
    docker的8个使用场景
    通过优化Gunicorn配置获得更好的性能
    django更换ORM连接处理(连接池)转
    单点登录,系统B如何辨别用户已登录系统A
    数据库Mysql的学习(六)-子查询和多表操作
    数据库Mysql的学习(五)-运算符与函数
    数据库Mysql的学习(四)-表的记录操作
    数据库Mysql的学习(三)-各种约束
    c和c++单链表
  • 原文地址:https://www.cnblogs.com/njabsky/p/13927791.html
Copyright © 2011-2022 走看看