设为首页 |收藏本站 |切换到宽版
 找回密码

NSIS中文论坛

查看: 665|回复: 2
收起左侧

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

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

    [LV.3]偶尔看看II

    1

    主题

    6

    帖子

    162

    积分

    积分
    162
    发表于 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

    帖子

    162

    积分

    积分
    162
     楼主| 发表于 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|手机版|小黑屋|联系我们|鲁ICP备12005273号 |  

    © 2015-2020 nsisfans.com.   All Rights Reserved.

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