tomcat+jdk+mysql在windows下一键安装包制作过程

tomat+jdk+mysql在windows下的一键安装包

最近公司需要我把做完的项目打包,但公司没有相关经验的文档来作为指导参考,作为有科(zuo)学(shi)观(xingZhi)的我,就按项目流程来做这次任务.

需求

  1. Tomcat,MySQL,JDK’;/统统地打进包咯;
  2. 安装完后,能直接运行,实现真正的客户只要一安装完后就能运行.

需求转化

功能需求

  1. Tomcat的执行环境需要jdk,需要先安装jdk.
  2. 工程能够直接运行, 则工程需要的数据库数据能够正确存储到数据库开放用户给工程使用,并且容器tomcat能够正常运行.
  3. 开放端口:操作系统能够开放防火墙端口让外部访问数据库和容器.
  4. MySQL能正确稳定运行
  5. Tomcat能正确稳定运行

所需软件

软件名称软件版本下载地址
Tomcat7.059(64位)http://tomcat.apache.org/download-70.cgi
MySQL5.6.25-winx64http://dev.mysql.com/downloads/mysql/
InnoSetup5.5.5http://jrsoftware.org/isdl.php

下载地址指到下载页面,需要读者打开自己选择下载.

设计

在需求转换中,包含一个隐形需求却MySQL,JAVA,和配置命令是有系统的局限限制的.所以不同的系统应该要有不同的安装包.在选择打包软件上综合各种的因素我最终选择了”Inno Setup Compiler”,这个不是把这篇博文的重点.

1. Tomcat准备

Tomcat的配置中,我设计成把JDK和Tomcat绑定在一起,因此把JAVA的JDK文件夹放在tomcat的bin目录下,然后在bin目录下创建setenv.bat文件.

1.setnv.bat 的内容为:
set "JAVA_HOME=%~dp0\Java\jdk1.6.0_45"
set "JAVA_OPTS= -Dfile.encoding=UTF-8 -Duser.timezone=GMT+8"

这里的JAVA_HOME,在catalina.bat文件里要求必须使用JDK(Java Develpment Kit){1},且JAVA_OPTS是可选.

2.Service.bat内容

在tomcat的bin目录下的Service.bat文件内容下”:gotJdkHome” 节下添加下面内容:

:gotJdkHome
set "%JAVA_HOME%=%~dp0\Java\jdk1.6.0_45"
set "JRE_HOME="%JAVA_HOME%\jre"

变成

:gotJdkHome
set "%JAVA_HOME%=%~dp0\Java\jdk1.6.0_45"
set "JRE_HOME="%JAVA_HOME%\jre"
if not exist "%JAVA_HOME%\jre\bin\java.exe" goto noJavaHome    
if not exist "%JAVA_HOME%\jre\bin\javaw.exe" goto noJavaHome
if not exist "%JAVA_HOME%\bin\javac.exe" goto noJavaHome
if not "%JRE_HOME%" == "" goto okJavaHome
set "JRE_HOME=%JAVA_HOME%\jre"
goto okJavaHome

在:gotJreHome节下添加下面的内容:

:gotJreHome
set "JRE_HOME= %GCIEMS_JAVA%\jre"

变成

:gotJreHome
set "JRE_HOME= %GCIEMS_JAVA%\jre"
if not exist "%JRE_HOME%\bin\java.exe" goto noJavaHome
if not exist "%JRE_HOME%\bin\javaw.exe" goto noJavaHome

在:installed节下添加下面的内容:

sc config tomcat7w_Gciems start=auto
net start tomcat7w_Gciems

变成

:installed
echo The service '%SERVICE_NAME%' has been installed.
sc config tomcat7w_Gciems start=auto
net start tomcat7w_Gciems


:installed
echo The service '%SERVICE_NAME%' has been installed.
sc config Tomcat7 start=auto
net start Tomcat7

这段主要是启动Tomcat7的Service,和把Tomcat7设置成为自动启动

3.在bin创建启动服务.bat

“%~dp0%\service.bat” install

我个人不喜欢用 %cd%这个命令,会影响到目录的判断,产生误会.

4.在bin创建关闭服务.bat

在下面添加代码
netsh advfirewall firewall delete rule name=”Tomcat_Gciems端口” dir=in protocol=TCP localport=8080
echo 关闭端口…成功
net stop tomcat7
sc.exe delete tomcat7
这段代码主要是删除tomcat 服务.

5.放置项目包和缓冲清理
  • 把项目的war包,或者部署包直接放置到Tomcat目录下的webapps目录下,
  • 删除logs目录下的文件
  • 删除work/Catalina/localhost目录下的文件
  • 删除temp目录下的文件

2. MySQL准备

1.数据库SQL

我用 MySQLMigrationTool 对项目的数据库经行转换成SQLCreates.sql、和Inserts.sql,然后放在MySQL目录下的data 目录下.

2.用户SQL

我用 MySQLMigrationTool 对数据库下的MySQL数据库下的db表和 user表转换成SQL,命名为InitUserInformations.sql,然后放在MySQL目录下的data 目录下.

3.mysql配置文档

在tomcat目录下my-default.ini,修改mysqld章节成为:

[mysqld]

basedir =
datadir =
port =3306
# server_id = .....

basedir 是指向mysql的目录,datadir是指向数据库目录地址,port是指mysql 的服务端口

4.启动服务

在MySQL 的bin目录下创建启动服务.bat,加入下面的代码
cd /d %~dp0
“%cd%\mysqld.exe” –install MySQL_Gciems
net start MySQL_Gciems
sc config MySQL_Gciems start=auto
echo 安装完毕
“%cd%\mysqladmin” -u root password jiesaigciems
echo 修改密码完毕
cd ..
“%cd%\bin\mysql.exe” -uroot -pjiesaigciems < “%cd%\data\Creates.sql”
“%cd%\bin\mysql.exe” -uroot -pjiesaigciems < “%cd%\data\Inserts.sql”
echo 建表完毕
“%cd%\bin\mysql.exe” -uroot -pjiesaigciems < use mysql < “%cd%\data\InitUserInformations.sql”
echo 建立新用户完毕

3. 开放端口的设置

1.开放Tomcat防火墙端口

在Tomcat的bin下的启动服务.bat添加下面的代码,注意不能加在.. service.bat install 之后,因为在 service.batgoto end; 这段代码,会直接让bat文件结束,所以要再Service.bat install之前.

netsh advfirewall firewall add rule name="Tomcat_Gciems端口" dir=in protocol=TCP localport=8080 action=allow
"%~dp0%\service.bat" install

2.关闭Tomcat防火墙端口

在Tomcat 的bin目录下的关闭服务.bat加入下面的代码

netsh advfirewall firewall delete rule name="Tomcat_Gciems端口" dir=in protocol=TCP localport=8080 
echo 关闭端口...成功
3.MySQL开放防火墙端口

在MySQL 的 bin目录下的打开服务.bat加入下面的代码:

netsh advfirewall firewall add rule name="MySQL_Gciems端口" dir=in protocol=TCP localport=3066 action=allow
echo 增加防火墙端口成功
4.MySQL关闭防火墙端口

在MySQL的bin目录下的关闭服务.bat 加入下面的代码:

netsh advfirewall firewall delete rule name="MySQL_Gciems端口" dir=in protocol=TCP localport=3306 
net stop MySQL_Gciems

4.Inno Setup 中的设置

1.初始化

打开Inno Setup软件,在File运行new,创建新的项目.
按照它的提示填写信息,直到第三步Application Files的时候

2.添加MySQL系统环境变量以及数据库配置

在Add folder 按钮中添加Tomcat 和MySQL的 目录.

[Code]
procedure SetEnv(aEnvName, aEnvValue: string; aIsInstall, aIsInsForAllUser: Boolean);
var
sOrgValue: string;
S1, sFileName: string;
bRetValue, bInsForAllUser: Boolean;
SL: TStringList;
x: integer;
begin
bInsForAllUser := aIsInsForAllUser;
if UsingWinNT then
begin
    if bInsForAllUser then
      bRetValue := RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', aEnvName, sOrgValue)
    else
      bRetValue := RegQueryStringValue(HKEY_CURRENT_USER, 'Environment', aEnvName, sOrgValue)
    sOrgValue := Trim(sOrgValue);
    begin
      S1 := aEnvValue;      //环境变量地址
      if pos(Uppercase(s1), Uppercase(sOrgValue)) = 0 then //还没有加入到系统环境时
      begin
        if aIsInstall then
        begin
          x := Length(sOrgValue);
          if (x > 0) and (StringOfChar(sOrgValue[x], 1) <> ';') then
            sOrgValue := sOrgValue + ';';
          sOrgValue := sOrgValue + S1;
        end;
      end else
      begin
        if not aIsInstall then
        begin
          StringChangeEx(sOrgValue, S1 + ';', '', True);
          StringChangeEx(sOrgValue, S1, '', True);
        end;
      end;

      if bInsForAllUser then        //系统环境变量
        RegWriteStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', aEnvName, sOrgValue)
      else
      begin
        if (not aIsInstall) and (Trim(sOrgValue) = '') then
          RegDeleteValue(HKEY_CURRENT_USER, 'Environment', aEnvName)
        else
          RegWriteStringValue(HKEY_CURRENT_USER, 'Environment', aEnvName, sOrgValue);
      end;
    end;
end else //非NT 系统,如Win98
begin
    SL := TStringList.Create;
    try
      sFileName := ExpandConstant('{sd}\autoexec.bat');
      LoadStringFromFile(sFileName, S1);
      SL.Text := s1;
      s1 :=   '"' + aEnvValue + '"';
      s1 := 'set '+aEnvName +'=%path%;' + s1 ;

      bRetValue := False;
      x := SL.IndexOf(s1);
      if x = -1 then
      begin
        if aIsInstall then
        begin
          SL.Add(s1);
          bRetValue := True;
        end;
      end else //还没添加
        if not aIsInstall then
        begin
          SL.Delete(x);
          bRetValue := True;
        end;

      if bRetValue then
        SL.SaveToFile(sFileName);
    finally
      SL.free;
    end;

end;
end;

procedure CurStepChanged(CurStep: TSetupStep);//添加环境变量
begin
if CurStep = ssPostInstall then
begin
   SetEnv('path',ExpandConstant('{app}/mysql-5.6.25-winx64/bin;'),true,true); //在这儿重写成你的MySQL 目录{app}是指你安装的父目录,一定在这儿调用,安装完无须重启,立即生效,
end;
end;


procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);//删除环境变量
begin
SetEnv('path',ExpandConstant('{app}/mysql-5.6.25-winx64/bin;'),false,true);//同上
//SetEnv('path','{app}/bin',false,true);
end;

[INI]
Filename:”{app}\mysql-5.6.25-winx64\my-default.ini”;Section:”mysqld”;Key:”basedir”; String:”{app}\mysql-5.6.25-winx64”
Filename:”{app}\mysql-5.6.25-winx64\my-default.ini”;Section:”mysqld”;Key:”datadir”; String:”{app}\mysql-5.6.25-winx64\data”

3.安装后启动应用

[Run]
Filename: “{app}\apache-tomcat-7.0.59-windows-x64\apache-tomcat-7.0.59\bin\启动服务.bat”;
Filename: “{app}\mysql-5.6.25-winx64\bin\启动服务.bat”;

4.卸载前启动的应用

[UninstallRun]
Filename: “{app}\apache-tomcat-7.0.59-windows-x64\apache-tomcat-7.0.59\bin\卸载服务.bat”;
Filename: “{app}\mysql-5.6.25-winx64\bin\卸载服务.bat”;

5.启动每次安装或者卸载时请求系统管理员权限

这步骤很重要,如果安装的时候没有该权限,则会发生tomcat注册不到服务,MySQL 运行不了等错误.
“请求系统管理员权限”,需要在安装脚本,的tools->Options勾上”Always Launch Setup/Uninstall as administrator”就可以了.

6.验证64位支持

我用的Tomcat,MySQL 都是64位的,32位的不支持.为了减少错误,需要在[Setup]章节中添加

ArchitecturesAllowed=x64;
 "ArchitecturesInstallIn64BitMode=x64" requests that the install be
; done in "64-bit mode" on x64, meaning it should use the native
; 64-bit Program Files directory and the 64-bit view of the registry.
; On all other architectures it will install in "32-bit mode".
ArchitecturesInstallIn64BitMode=x64;
7.编译

按菜单的Build-> Compile ,或按 “Ctrl+F9” 经行编译,编译的文件默认跟脚本同一目录下的output 目录下.

THE END

Refer
[1]Catalina.bat,tomcat的bin目录45行

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值