使用InstallShield下部署ASP.NET网站和MySQL,目标机为Win7——(二)使用InstallShield部署非安装版MySQL

接上一篇文章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)        OrganizationSetup Design内设置Feature,有个DefaulatFeature我们可以删除它,也可以修改它。Organization还有FeaturesComponents视图是他们各自的列表,读者可自行查看。下图中,我们使用向导为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个下拉框,它会自动出现代码模板,我们只需在beginend间,敲入适当的代码即可。

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

 

 

posted on 2012-12-01 18:24  水手paul2008  阅读(881)  评论(0编辑  收藏  举报