用InstallAnywhere打包Java程序包含MySQL数据库
用InstallAnywhere打包Java程序包含MySQL数据库
InstallAnywhere打包Java程序时可以自动完成jre的打包,但是需要MySQL数据库的程序就得手动添加。资料太少,纠结了三天,终于解决
1、 下载绿色版的MySQL,可以去官网下载。网友制作了MySQL的绿色精简Bat版(http://download.csdn.net/source/524812),可以最大化的缩小安装包的体积。所以我采用了这种方式。
2、 绿色精简的MySQL是以进程方式启动,对于安装版的软件,使用服务方式启动更方便。从完整版拷贝/bin目录下mysqld-nt.exe文件到精简版的相应目录中,同时在MySQL目录下创建一个启动服务需要的my.ini配置文件,基本内容如下
3、 数据库安装完成需要导入一个sql文件来进行初始化,建立应用程序所需要的结构。从完整版拷贝/bin目录下mysqldump.exe文件到精简版的相应目录中,同时将要安装的应用程序所需要的sql文件放到/bin目录下
4、 将MySQL目录中添加到InstallAnywhere工程中,在Post-Install(安装之后)添加以下动作:
a) my.ini中包含了mysql程序的路径,需要安装完成后根据环境修改。添加一个Modify Text File – Single File(修改单文件),Installed file中选择my.ini文件$USER_INSTALL_DIR$$/$MySQL$/$my.ini,点击下边Search and replace strings后的Configure。增加两个字符串替换(不包含引号),
1、"C:/Program Files/Tx2”替换为“$USER_INSTALL_DIR$”,
2、”\” 替换为 “/”。
b) 将mysql注册为系统服务。添加一个Execue Script/Batch file(执行脚本/命令)。在Comment填写动作的名字“注册Mysql服务”,在Script填写命令(Call "$USER_INSTALL_DIR$\MySQL\bin\mysqld.exe" -install Mysql --defaults-file="$USER_INSTALL_DIR$\MySQL\my.ini" )(不包含括号)。因为执行完此步才能继续向下执行,选中下边Suspend installation until process completes。
c) Mysql服务启动时从注册表中读取mysql.exe和配置文件my.ini的路径,需要向注册表中添加。类似b中的方法,依次添加“删除服务执行文件项”(REG Delete HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Mysql /v ImagePath /f)和“添加服务执行文件项”( REG add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL /v ImagePath /t REG_EXPAND_SZ /d "$USER_INSTALL_DIR$\MySQL\bin\mysqld.exe \"--defaults-file=$USER_INSTALL_DIR$\MySQL\my.ini\" MySQL")
d) 启动Mysql服务。添加一个Start,Stop,Pause Windows Service(启动,停止,暂停Windows服务),在Service Name中添加服务名mysql,选中下边Start service和后边的选项Suspend installation until process completes,等待执行完毕。
e) 建立数据库表结构,用sql文件初始化数据库。类似b方法,添加初始化数据库(Call "$USER_INSTALL_DIR$\MySQL\bin\mysqldump.exe" -u root tx2< "$USER_INSTALL_DIR$\MySQL\bin\tx2.sql")。
5、 在卸载时,需要添加动作完成卸载前的服务清理工作,在Pre-Uninstall(卸载前)依次添加
a) 依照4.d中的方法,添加关闭Mysql服务的动作
b) 依照4.b中的方法,添加“删除MySQL服务”( sc delete mysql)
c) 依照4.b的方法,添加“删除执行文件项”( REG Delete HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Mysql /v ImagePath /f)