接上一篇文章http://www.cnblogs.com/wigis/archive/2012/12/01/2797505.html
在使用bat批处理可以自动部署MySQL服务端后,我们使用InstallShield来达到相同的目的。原理还是一样的,在用InstallShield安装到客户机的指定位置后,运行bat文件。
1. 准备以下文件。在上一步应该已经都完成了。
1) 首先准备好非安装版MySQL(可以删除其内mysql-test子文件夹,此文件夹用于回归测试MySQL,无用而且较大);
2) 准备好my.ini
若客户端可能存在MySQL服务器软件,要修改port为其他端口。只要保证每个MySQL服务器使用不同端口,就可以在一个机器上运行多个MySQL实例,很简单。
3) 准备好导入数据的SQL文件
4) 准备好bat文件。
解释:
rem 设置当前路径
set curDir=%cd%
rem是相当于//注释
保存当前路径其实似乎没必要。
rem 若存在服务,则删除
net stop MySQLCiBASE
bin\mysqld remove MySQLCiBASE
不管客户机有没有,首先停掉MySQL服务,并卸载。客户机没有则报错,但不影响继续执行。
echo 安装MySQL服务。。。
bin\mysqld --install MySQLCiBASE --defaults-file="%curDir%\my.ini"
安装MySQL服务,--defaults-file参数要带上双引号,否则路径中有空格(比如C:\Program Files)就会报错,dos命令遇到空格就认为命令结束。导致路径错误。
echo 启动MySQL服务。。。
net start MySQLCiBASE
echo MySQL安装完成。。。
cd %curDir%
echo 初始化MySQL用户。。。
bin\mysql -uroot <init.sql
我们加入了init.sql,此SQL文件为了导入用户。你可以在其中修改MySQL的默认帐户以及权限,使MySQL更安全。
echo MySQL开始导入数据。。。
bin\mysql -uroot<cibase.sql
导入自己的Sql数据
pause
为了测试我们后面加入pause。实际运行不需要,否则还要用户点击下安装才能继续。
2. InstallShield部署软件有些思想。它把需要安装的软件分为若干Feature,每个Feature是软件中相对独立的功能,可由用户选择安装或不安装。对于我们只有一个MySQL的安装,所以只有一个Feature。那每个Feature下肯定应该包含很多文件及文件夹,而InstallShield是Component的概念。一个Component可包含多个文件,并指定独立的安装位置,当然一般是所属Feature下。InstallShield有一些规则来把文件或文件夹分割为不同的Component,比如每个文件夹至少分割成一个Component;遇到exe,dll,hlp等文件也要分割一个Component。我们不用管它,我们使用向导来建立Feature下的Component,IntallShield会自动为我们分割好。
我们部署MySQL其实只用到很简单的东西。我们新建一个Feature,指定安装路径,使用向导导入文件。然后,比较高级的技术,就是在安装完成后要运行脚本Intall.bat文件。
1) 首先建立InstallScript MSI Project。为什么建立此类型,据说此类型最好用。
2) 当然在Project Assistant选项卡中填写一些基本信息,公司名似乎必填,或直接在Intallation DesigneràInstallation Information内填写
3) Intallation DesigneràInstallation InformationàGeneral Information的安装目录要自己填写清楚。方便查看检验。
4) 在Organization的Setup Design内设置Feature,有个DefaulatFeature我们可以删除它,也可以修改它。Organization还有Features,Components视图是他们各自的列表,读者可自行查看。下图中,我们使用向导为mysql导入文件。若不用向导,我们需要手工建立Component,并对应其mysql的父子目录关系,当文件很多时几乎不可行,多亏向导。
5) 选择第一个Best Practices
6) 选择安装目录(其实Feature的目录默认为其包含的Components的目录)
7) 选择Add Folder…。添加mysql非安装版的文件夹
8) 比较慢,它自动为mysql的文件分为很多components。
9) 重要的一步,要添加运行脚本。在Behavior and LogicàInstallScript中。
10) 在Setup.rul中添加,选择上面2个下拉框,它会自动出现代码模板,我们只需在begin和end间,敲入适当的代码即可。
LanchAppAndWait(INSTALLDIR6”Instal.bat”,””,”WAIT”);函数的意思,可在InstallShield帮助文档中查询。
11) 点击Run。就OK了。错误的地方自己测试。
12) 卸载脚本
- 其实安装MySQL服务最好不要用MySQL名称,这个名称是MySQL的默认名称,假如客户端安装了MySQL服务的话,一般就是此名称,会冲突。假如需要在客户机部署多个MySQL实例,我们根据自己项目需求,改变Install.bat和UnInstall.bat的MySQL Windows服务名称和my.ini[mysqld]组下的port即可。
- 关于IntallShield的知识,多读帮助文档。很多知识网上说的五花八门。还是帮助文档靠谱。我使用的是InstallShield2010 Premier Edition 英文版。
- 我也是刚刚学习InstallShield.
使用InstallShield下部署ASP.NET网站和MySQL,目标机为Win7——(一)使用bat批处理部署非安装版MySQL
使用InstallShield下部署ASP.NET网站和MySQL,目标机为Win7——(二)使用InstallShield部署非安装版MySQL
使用InstallShield下部署ASP.NET网站和MySQL,目标机为Win7——(三)整体部署
2012-12-01