InstallShield LE 打包MySQL

本文介绍了如何使用InstallShield Limited Edition 2013打包MySQL。首先,作者修改了MySQL免安装版的my.ini文件,并编写了批处理脚本mysqlsetup.bat进行安装配置。在打包过程中,遇到了批处理路径转换问题,通过调整脚本解决了。然后,创建了mysqlunistall.bat用于卸载时删除数据文件夹和停止服务。由于InstallShield LE的限制,作者通过创建副本mysqlunistall1.bat来解决卸载时执行的问题。最后,详细说明了在InstallShield中设置安装和卸载过程的步骤,以及确保安装包以管理员权限运行的方法。
摘要由CSDN通过智能技术生成

之前软件使用的数据库是微软的sql server,InstallShield Limited 2013中是可以直接打包的,现在需要改成mysqlserver,则需要自己写批处理把mysql打包进去。

先说一下准备工作。打包之前先试了一下在本机安装MySQL,了解了一下安装步骤,方便写脚本。

1、需要下载mysql的免安装版,文件夹名是MySQL Server 5.7,更改其中的my.ini文件,如果只有mydefault.ini,需要另存为my.ini再修改。

basedir="%BaseDir%"
datadir="%BaseDir%data"
port = 3307

其中basedir表示的是mysql的安装位置,datadir是数据库、错误日志等的存放位置。本机直接安装时可以把免安装版的mysql放在任何一个目录下,然后将%BaseDir%改成该目录的位置,就可以直接安装。但如果打包的话这个位置是由用户指定的,所以此处先保留%BaseDir%,批处理脚本中会将其替换成安装目录。

之后就可以开始写脚本了,因为之前没有接触过因此遇到很多小问题。新建一个文本文档,重命名为mysqlsetup.bat,就是我们安装时用的批处理文件了。

2、如上所述,脚本中第一步就是修改BaseDir为当前的安装目录。因为mysqlsetup.bat是放在根目录的,也就是把BaseDir改为mysqlsetup.bat所在位置就好。注意“MySQL Server 5.7”是和免安装版mysql的文件夹是一致的。

::切换路径
cd /d  "%~dp0" 

::改变my.ini中的目标文件夹地址
set mybase=%~dp0MySQL Server 5.7\
::防止地址中出现\n之类的转义字符导致出错
set mybase=%mybase:\=\\%
echo %mybase%
::文件名
set cf=%mybase%my.ini

::变量延迟扩展"usebackq"用来使后面的程序可以用引号括起来
setlocal EnableDelayedExpansion
::%是特殊字符,%%才表示%
for /f  "usebackq delims=" %%i in  ("%cf%") do (set  "str=%%i"&set "str=!str:%%BaseDir%%=%mybase%!"&echo !str! >>_temp.ini)
::/y表示直接覆盖,没有提醒
move /y _temp.ini "%cf%"
过程就是将当前目录下的my.ini文件中所有的%BaseDir%替换成该目录下的MySQL Server 5.7文件夹地址。遇到两个因为特殊字符引起的问题。一个是%~dp0,也就是bat文件所在的地址,是以“\”隔开的,如果这个地址当中有特殊字符,比如是D:\njust,那这边\n就会被当做是回车符,运行时会报错,说不存在这个目录。解决方案就是再加上一个“\”。另一个是my.ini文件中mybase两边都有一个%,在批处理文件中要用到%必须改成%%才行。还有其他一些特殊字符前面是通过加“^”来转义。总之特殊字符的处理是新手写批处理的一个大坑啊。还有一个问题是因为对for语句的不了解。不要偷懒,在命令窗口中查看下for的用法:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值