查看: 161|回复: 2

[求助] NSIS脚本中怎么把变量中的字符串'\'替换成'/'

[复制链接]
  • TA的每日心情
    开心
    2019-11-1 10:07
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    1

    主题

    6

    帖子

    142

    积分

    积分
    142
    发表于 2019-10-12 10:21:08 | 显示全部楼层 |阅读模式
    背景:
    mysql-5.7.26-winx64配置文件my.ini中有如下配置:
    basedir=D:/tool/mysql-5.7.26-winx64
    datadir=D:/tool/mysql-5.7.26-winx64/data

    注意:上面路径中用的是正斜杠'/',只有配置成正斜杆'/',mysql服务才能识别到(我也很纳闷,很奇怪的现象)

    但是NSIS脚本安装包生成的配置文件my.ini中有如下配置:
    basedir=D:\tool\mysql-5.7.26-winx64
    datadir=D:\tool\mysql-5.7.26-winx64\data
    注意:上面路径中用的是反斜杆'\'

    NSIS脚本中配置my.ini的代码如下:
        ;设置初始化SQL文件路径
        WriteINIStr "${MYSQL_HOME}\my.ini" mysqld "basedir" '"${MYSQL_HOME}"'
        WriteINIStr "${MYSQL_HOME}\my.ini" mysqld "datadir" '"${MYSQL_HOME}\${DATA_RESOURCE_CATALOG}"'
        FlushINI "${MYSQL_HOME}\my.ini"


    问题点:
    ;定义MYSQL_HOME常量常量
    !define MYSQL_HOME "$INSTDIR\${MYSQL_RESOURCE_CATALOG}"

    ;定义数据存放路径常量
    !define DATA_RESOURCE_CATALOG "data"


    变量${MYSQL_HOME}的值是D:\tool\mysql-5.7.26-winx64,怎么把变量中的字符串'\'替换成'/'






    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-11-1 10:07
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    1

    主题

    6

    帖子

    142

    积分

    积分
    142
     楼主| 发表于 2019-10-12 17:20:14 | 显示全部楼层
    查看MySQL官方文档,说反斜杆'\'必须替换成斜杆'/'或者'\\' QQ图片20191012171655.png

    没办法,改脚本,NSIS脚本中加入下面红色代码就可以了
        ;设置初始化SQL文件路径
        Var /GLOBAL MYSQL_HOME_SLASH
        ;把路径中的反斜杆\替换为正斜杆/
        ${WordReplace} ${MYSQL_HOME} "\" "/" "+" $MYSQL_HOME_SLASH
        WriteINIStr "${MYSQL_HOME}\my.ini" mysqld "basedir" "$MYSQL_HOME_SLASH"
        WriteINIStr "${MYSQL_HOME}\my.ini" mysqld "datadir" "$MYSQL_HOME_SLASH/${DATA_RESOURCE_CATALOG}"
        FlushINI "${MYSQL_HOME}\my.ini"




    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|联系我们|NSIS中文论坛    

    GMT+8, 2019-12-6 01:26 , Processed in 0.021066 second(s), 15 queries , MemCache On.

    Powered by Discuz! X3.3

    © 2001-2019 Comsenz Inc.

    快速回复 返回顶部 返回列表