一:精简mysql
Mysql数据库比较大,可以进行精简。这样可以减少mysql打包后的体积。单个的mysql经过精简后,打包的体积大概是80M左右。
精简方案:
1:只保留data,share,bin
2::删除BIN下面除以下三个文件之外的所有文件:
libmysql.dll(MYSQL5中的文件,在MYSQL5.5中不存在)
mysqladmin.exe
Mysqld.exe(服务)
Mysql.exe(用于执行部分命令)
3:删除Share目录下除以下目录外的所有目录charsets,english
4:删除Data目录下的除mysql之外的所有文件和目录
5:书写配置文件,将其命名为my.ini
6:精简后的文件结构为
Mysql
|--bin
|--share
|--data
my.ini
二:下载advanced installer 9.5(以下简称AI)并安装
下载地址:http://www.advancedinstaller.com/
三:使用advanced installer 打包mysql
(1)使用professional版本创建新工程
(2)填写product details信息
(3)添加需要打包的mysql数据库
Files and folders,在右键application,将mysql根目录选中,并将其添加进来。 再添加的过程中,AI会自动添加识别my.ini,选中并点击确认。
(4)修改配置文件
a) 双击my.ini,
b) 找到basedir,双击,将当输入[ 时,AI会自动识别该值,并出现如下图所示的提示框,选择folder,并选中mysql的根目录,则值会自动修改为"[MySQL_Dir]”,该目录在安装过程中,会自动被替换为安装位置的目录。可以使mysql安装在任意位置。
,
c) 同样的方法,修改datadir的值
(5)添加mysql服务(mysql服务不能使用service选项卡中的内容直接添加)
a) Add custom action -> 双击 launch file or open url -> 选择相应的脚本,并在脚本名称后,添加相应的参数。脚本如下,名称为start_msyql.bat,参数为mysql根目录\bin
@echo off
set path=%1
echo 安装Mysql5服务...
%path%\mysqld --install mysql
echo 启动Mysql5服务...
"%SystemRoot%"\system32\net start mysql
b) 选中excution option中的deferred。
C)修改execution stage conditon 中的内容,仅仅选中instal选项中的 first time install
(6)配置mysql数据库用户名和密码
由于精简后的mysql没有设置密码,所以要配置数据库的用户名和密码
Custom action 选项卡。在这里添加用户自动以动作,配置数据库。
a) Add custom action -> 双击 launch attached file ,选中mysql\bin\mysql.exe
b) 选中excution option中的deferred。
c) 修改execution stage conditon 中的内容,仅仅选中instal选项中的 first time install
d) 设置 mysql.exe的运行参数
-uroot -D mysql -e "source [#root_privileges.sql]"
e) root_privileges.sql的内容为
SET PASSWORD FOR 'root'@'localhost'=PASSWORD('password');
FLUSH PRIVILEGES;
f) 将该用户自定义操作放在installation Sequence 中的addresources之后
(7)创建数据库
a) 同上
b) 同上
c) 同上
d) 设置 mysql.exe的运行参数
-uroot -ppassword -D mysql -e "source [#dababase.sql] "
e) dababase.sql的内容为创建数据库的脚本
f) 将该用户自定义操作放在installation Sequence 中的上一个操作之后
(8)配置删除mysql服务的脚本
a) Add custom action -> 双击 launch file or open url -> 选择相应的脚本,并在脚本名称后,添加相应的参数。脚本如下,名称为stop_msyql.bat,参数为mysql根目录\bin
@echo off
set path=%1
echo 停止Mysql5务...
"%SystemRoot%"\system32\net stop mysql
%path%\mysqld --remove mysql
b) 选中excution option中的deferred。
C)修改execution stage conditon 中的内容,仅仅选中uninstal选项中的 regular uninstal
(9)删除用于设置权限和数据库的脚本
【注意】
(1)mysql数据库不能使用ODBC的方式运行数据库,因为在AI中,ODBC的安装以及与ODBC相关联的sql语句的执行总是在启动服务之前,
(2)不建议在配置mysql数据库的时候,使用bat脚本,因为使用mysql -e 的方式直接执行放于文本中的sql语句时, 如果路径存在空格就必须用使用引号,则执行语句的时候mysql -e “source “文本地址” “,source会错误的识别路径,造成麻烦。
(3)在打包时,绝不能使用曾经执行过的mysql数据库,否则出现的问题比较多,很可能安装不上。尤其是不能带着数据库打包。因为在压缩的过程中,log文件和ibdata1这个文件经常打包大小跟解压后的大小不一致。(不知道是什么问题,有人知道的话,请解答,谢谢)
(4)打包的时候,mysql服务职能使用脚本的方式添加,而不能直接使用service选项卡添加,否则只能够在曾经安装过mysql的服务器中,才能将服务启动起来,如果不安装mysql,则服务无法启动。不知道什么问题。
(5)在启动mysql的脚本中,net 命令前必须加 "%SystemRoot%"\system32\”否则系统无法识别net命令
精简mysql的参考文献:http://www.jz123.cn/text/0738003.html
AI官网有关mysql的操作的文章:
http://www.advancedinstaller.com/forums/viewtopic.php?f=2&t=21072
http://www.advancedinstaller.com/forums/viewtopic.php?f=2&t=11494
http://www.advancedinstaller.com/forums/viewtopic.php?f=2&t=21072&p=52405#p52405
用户自定义操作的官方说明以及顺序
http://www.advancedinstaller.com/user-guide/custom-actions.html
http://www.advancedinstaller.com/user-guide/standard-actions.html