Tomcat+jre+mysql+war集成exe文件,windows系统一键安装

前言:
该文章在之前已经发过,但由于旧账号ID太low,以前注册较随意,所以弃号重发了,哈哈~

一、准备资源文件
1、下载免安装版mysql、tomcat、jre、curl插件包(我用的是:官网下载的mysql-5.5.40-winx64、apache-tomcat-8.0.29.、jre1.8,curl-7.61.0-win64-mingw),这里说明下,Tomcat只需要jre就能运行,所以没必要把jdk集成进来,反而容易使项目太大,占资源,同时我这里是因为项目框架原因,需要初始化api请求,所以引入了curl插件用于最后的自动初始化作用,你们项目不需要的话可以省略;
2、下载Inno Steup大包工具(附下载链接:http://www.jrsoftware.org/download.php/is-unicode.exe);
3、在H盘中新增文件夹,命名为项目名字(我的是dbcsxm);
4、然后把tomcat、mysql存放进H:\dbcsxm下,jre放入H:\xtest\apache-tomcat-8.0.29下。
Tomcat+jre+mysql+war集成exe文件,windows系统一键安装
Tomcat+jre+mysql+war集成exe文件,windows系统一键安装
二、准备相应的脚本
1、mysql文件夹脚本准备
1.1、官网下载的解压版文件夹中没有my.ini文件,为此我从网上百度来的,已验证可用,这里直接全文粘贴进来,你们到时候也可以直接复制我的,只需要把删除线位置对应修改成自己的即可,这里内容主要用于mysql安装时的基础配置,比如引擎使用INNODB, 端口3306等;
--------------------------my.ini statrt-------------------
[client]
port=3306
[mysql]
default-character-set=utf8
[mysqld]
port=3306
basedir=“H:/dbcsxm/mysql-5.5.40-winx64”
datadir=“H:/dbcsxm/mysql-5.5.40-winx64/data/”
character-set-server=utf8
default-storage-engine=INNODB
innodb_large_prefix=on
sql-mode=“STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”
max_connections=100
query_cache_size=32M
table_open_cache=256
tmp_table_size=35M
thread_cache_size=8
myisam_max_sort_file_size=100G
myisam_sort_buffer_size=69M
key_buffer_size=50M
read_buffer_size=64K
read_rnd_buffer_size=256K
sort_buffer_size=256K
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=1M
innodb_buffer_pool_size=96M
innodb_log_file_size=20M
innodb_thread_concurrency=18

--------------------------my.ini End-------------------
Tomcat+jre+mysql+war集成exe文件,windows系统一键安装
1.2、把需要初始化执行创建数据库、表、用户等数据的sql脚本放入H:\dbcsxm\mysql-5.5.40-winx64\data目录下
Tomcat+jre+mysql+war集成exe文件,windows系统一键安装

1.3、写一个mysql批量处理脚本放在H:\dbcsxm\mysql-5.5.40-winx64\bin目录下,然后修改文中删除线位置内容,该脚本实现mysql自动安装,自动执行sql脚本等;

---------------------------------mysql_init.bat start-----------------------------------

cd /d %~dp0
cd…
set “bbd=%cd%”
cd /d %cd%\bin
“%cd%\mysqld.exe” --initialize-insecure --user=mysql --console
echo -----mysql init succee-----
mysqld install mysql --defaults-file="%bbd%\my.ini"
echo -----mysql service install succee-----
net start mysql
sc config mysql start=auto
net stop mysql
net start mysql
echo 安装完毕
“%cd%\mysqladmin” -u root password root
echo 修改密码完毕
cd …
“%cd%\bin\mysql.exe” -uroot -proot < "%cd%\data\dbroot.sql "
echo 建表完毕
echo 建立新用户完毕

---------------------------------mysql_init.bat end-----------------------------------
Tomcat+jre+mysql+war集成exe文件,windows系统一键安装
2、tomcat脚本修改
2.1 修改catalina.bat文件,主要是为了实现tomcat与jre集成,这个比较简单,往脚本里加入下面这行命令就行;
set JRE_HOME=…\jre
Tomcat+jre+mysql+war集成exe文件,windows系统一键安装
2.2 修改service.bat文件,直接把下面这些命令全部复制粘贴替换你的即可;

-----------------------------------service.bat start---------------------------------------------
@echo off
rem Licensed to the Apache Software Foundation (ASF) under one or more
rem contributor license agreements. See the NOTICE file distributed with
rem this work for additional information regarding copyright ownership.
rem The ASF licenses this file to You under the Apache License, Version 2.0
rem (the “License”); you may not use this file except in compliance with
rem the License. You may obtain a copy of the License at
rem
rem distributed under the License is distributed on an “AS IS” BASIS,
rem http://www.apache.org/licenses/LICENSE-2.0
rem
rem Unless required by applicable law or agreed to in writing, software
rem ---------------------------------------------------------------------------
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rem See the License for the specific language governing permissions and
rem limitations under the License.

rem Service is installed using default settings.
rem NT Service Install/Uninstall script
rem
rem Options
rem install Install the service using Tomcat8 as service name.
rem remove Remove the service from the System.
rem
rem Guess CATALINA_HOME if not defined
rem name (optional) If the second argument is present it is considered
rem to be new service name
rem ---------------------------------------------------------------------------
setlocal

set “CURRENT_DIR=%cd%”
echo The tomcat8.exe was not found…
rem if not “%CATALINA_HOME%” == “” goto gotHome
set “CATALINA_HOME=%cd%”
if exist “%CATALINA_HOME%\bin\tomcat8.exe” goto okHome
rem CD to the upper dir
cd …
set “CATALINA_HOME=%cd%”
:gotHome
if exist “%CATALINA_HOME%\bin\tomcat8.exe” goto okHome
if not “%JRE_HOME%” == “” goto gotJreHome
echo The CATALINA_HOME environment variable is not defined correctly.
echo This environment variable is needed to run this program
goto end
:okHome
rem Make sure prerequisite environment variables are set
if not “%JAVA_HOME%” == “” goto gotJdkHome
set “JRE_HOME=%JAVA_HOME%\jre”
echo Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
echo Service will try to guess them from the registry.
goto okJavaHome
:gotJreHome
if not exist “%JRE_HOME%\bin\java.exe” goto noJavaHome
if not exist “%JRE_HOME%\bin\javaw.exe” goto noJavaHome
goto okJavaHome
:gotJdkHome
echo The JAVA_HOME environment variable is not defined correctly
if not exist “%JAVA_HOME%\jre\bin\java.exe” goto okJavaHome
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
:noJavaHome
echo This environment variable is needed to run this program
shift
echo NB: JAVA_HOME should point to a JDK not a JRE
goto end
:okJavaHome
if not “%CATALINA_BASE%” == “” goto gotBase
set “CATALINA_BASE=%CATALINA_HOME%”
:gotBase

set “EXECUTABLE=%CATALINA_HOME%\bin\tomcat8.exe”

rem Set default Service name
set SERVICE_NAME=Tomcat8
set DISPLAYNAME=Apache Tomcat 8.0

if “x%1x” == “xx” goto doInstall
set SERVICE_CMD=%1
:displayUsage
if “x%1x” == “xx” goto checkServiceCmd

set SERVICE_NAME=%1
set DISPLAYNAME=Apache Tomcat 8.0 %1
shift
if “x%1x” == “xx” goto checkServiceCmd
echo Unknown parameter “%1”

goto displayUsage

:checkServiceCmd
if /i %SERVICE_CMD% == install goto doInstall
if /i %SERVICE_CMD% == remove goto doRemove
if /i %SERVICE_CMD% == uninstall goto doRemove
echo Unknown parameter “%SERVICE_CMD%”
echo.
echo The service ‘%SERVICE_NAME%’ has been removed
echo Usage: service.bat install/remove [service_name]
goto end

:doRemove
rem Remove the service
echo Removing the service ‘%SERVICE_NAME%’ …
echo Using CATALINA_BASE: “%CATALINA_BASE%”

“%EXECUTABLE%” //DS//%SERVICE_NAME% ^
–LogPath “%CATALINA_BASE%\logs”
if not errorlevel 1 goto removed
echo Failed removing ‘%SERVICE_NAME%’ service
goto end
:removed
goto end

:doInstall
set “JRE_HOME=%JAVA_HOME%\jre”
rem Install the service
echo Warning: Neither ‘server’ nor ‘client’ jvm.dll was found at JRE_HOME.
echo Installing the service ‘%SERVICE_NAME%’ …
echo Using CATALINA_HOME: “%CATALINA_HOME%”
echo Using CATALINA_BASE: “%CATALINA_BASE%”
echo Using JAVA_HOME: “%JAVA_HOME%”
echo Using JRE_HOME: “%JRE_HOME%”

rem Try to use the server jvm
set “JVM=%JRE_HOME%\bin\server\jvm.dll”
rem if exist “%JVM%” goto foundJvm
rem Try to use the client jvm

set “JVM=%JRE_HOME%\bin\client\jvm.dll”
if exist “%JVM%” goto foundJvm
set JVM="%JAVA_HOME%\jre\bin\client\jvm.dll"
–StdOutput auto ^
:foundJvm
echo Using JVM: “%JVM%”

set “CLASSPATH=%CATALINA_HOME%\bin\bootstrap.jar;%CATALINA_BASE%\bin\tomcat-juli.jar”
if not “%CATALINA_HOME%” == “%CATALINA_BASE%” set “CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\bin\tomcat-juli.jar”

“%EXECUTABLE%” //IS//%SERVICE_NAME% ^
–Description “Apache Tomcat 8.0.29 Server - http://tomcat.apache.org/” ^
–DisplayName “%DISPLAYNAME%” ^
–Install “%EXECUTABLE%” ^
–LogPath “%CATALINA_BASE%\logs” ^
–StdError auto ^
–JvmOptions “-Dcatalina.home=%CATALINA_HOME%;-Dcatalina.base=%CATALINA_BASE%;-Djava.endorsed.dirs=%CATALINA_HOME%\endorsed;-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties” ^
–Classpath “%CLASSPATH%” ^
–Jvm “%CATALINA_HOME%\jre\bin\server\jvm.dll” ^
–StartMode jvm ^
–StopMode jvm ^
–StartPath “%CATALINA_HOME%” ^
–StopPath “%CATALINA_HOME%” ^
–StartClass org.apache.catalina.startup.Bootstrap ^
–StopClass org.apache.catalina.startup.Bootstrap ^
–StartParams start ^
–StopParams stop ^
–JvmMs 128 ^
–JvmMx 256
if not errorlevel 1 goto installed
echo Failed installing ‘%SERVICE_NAME%’ service
goto end
:installed
cd “%CURRENT_DIR%”
echo The service ‘%SERVICE_NAME%’ has been installed.

:end

-----------------------------------service.bat end---------------------------------------------

**注:**该脚本主要是实现tomcat的一些环境变量配置~
Tomcat+jre+mysql+war集成exe文件,windows系统一键安装
2.3 新增一个脚本存放在H:\dbcsxm\apache-tomcat-8.0.29\bin目录下,脚本目的是实现tomcat应用自启,该脚本不需要修改任何东西,复制粘贴即可;

------------------------------------------startService.bat start----------------------------------------

echo
call “%~dp0%service.bat” install tomcat8
echo
sc config tomcat8 start= auto
sc start tomcat8
rem 下面两句是设置到服务里自动启动的
wmic service where name=“tomcat8” changestartmode “automatic”
wmic service where name=“tomcat8” startservice
exit

------------------------------------------startService.bat end----------------------------------------
Tomcat+jre+mysql+war集成exe文件,windows系统一键安装
三、curl脚本准备(如果项目中不需要初始化api请求的,这步可以跳过)
3.1准备curl请求脚本,存放在H:\dbcsxm\curl-7.61.0-win64-mingw\bin目录下,目的是实现项目启动后,自行初始化

-------------------------------------------startup.bat start-----------------------------------------------
curl -D -u admin:admin -X -GET -H “Content-Type:application/json” "http://localhost:8080/dbcsxm/api/config/inititem/codeclass "

-------------------------------------------startup.bat end-----------------------------------------------
Tomcat+jre+mysql+war集成exe文件,windows系统一键安装
四、Inno Steup脚本准备,存放在H:\dbcsxm目录下,实现exe程序打包

--------------------------------------dbcsxm.iss start----------------------------------------------

[Setup]
; 注: AppId的值为单独标识该应用程序。
; 不要为其他安装程序使用相同的AppId值。
; (生成新的GUID,点击 工具|在tool中生成GUID。)
;定义打包项目名称
#define MyAppName “打包测试项目”
;定义打包项目版本
#define MyAppVersion “v1.0”
;项目ID
AppId={{C1F1E269-9C3C-4B2D-A36D-0C21A8EE48B8}
;项目名称
AppName={#MyAppName}
;项目版本
AppVersion={#MyAppVersion}
;项目版本名称
AppVerName={#MyAppName}{#MyAppVersion}
;公司名称
AppPublisher=TestTechnology
;公司地址

AppPublisherURL=http://www.baidu.com/
AppSupportURL=http://www.baidu.com/
AppUpdatesURL=http://www.baidu.com/

;默认安装地址
DefaultDirName={pf}\dbcsxm
;默认组织名称
DefaultGroupName={#MyAppName}
;允许不需要icon
AllowNoIcons=yes
;默认打包exe文件名
OutputBaseFilename=dbcsxm
Compression=lzma
SolidCompression=yes

*[Files]
;拷贝tomcat
Source:“H:\dbcsxm\apache-tomcat-8.0.29*”;DestDir:"{app}\apache-tomcat-8.0.29";Flags:igNoreversion recursesubdirs createallsubdirs

;拷贝mysql
Source:“H:\dbcsxm\mysql-5.5.40-winx64*”;DestDir:"{app}\mysql-5.5.40-winx64";Flags:igNoreversion recursesubdirs createallsubdirs
;拷贝curl
Source:“H:\dbcsxm\curl-7.61.0-win64-mingw*”;DestDir:"{app}\curl-7.61.0-win64-mingw";Flags:igNoreversion recursesubdirs createallsubdirs
[Languages]
Name: “chinesesimp”; MessagesFile: “compiler:Default.isl”*

[Icons]

Name: “{group}{cm:UninstallProgram,{#MyAppName}}”; Filename: “{uninstallexe}”

Name: “{commondesktop}\打包测试项目”; Filename: http://localhost:8080/dbcsxm/index.jsp

[INI]
;修改数据库配置文件
Filename:"{app}\mysql-5.5.40-winx64\my.ini";Section:“mysqld”;Key:“basedir”; String:"{app}\mysql-5.5.40-winx64"
Filename:"{app}\mysql-5.5.40-winx64\my.ini";Section:“mysqld”;Key:“datadir”; String:"{app}\mysql-5.5.40-winx64\data"
Filename:"{app}\mysql-5.5.40-winx64\my.ini";Section:“mysqld”;Key:“port”; String:“3306”
Filename:"{app}\mysql-5.5.40-winx64\my.ini";Section:“client”;Key:“port”; String:“3306”

[Run]
;Flags 隐藏命令执行弹框
Filename: “{app}\mysql-5.5.40-winx64\bin\mysql_init.bat”;Flags:runhidden;
Filename: “{app}\apache-tomcat-8.0.29\bin\startService.bat”;Flags:runhidden;
Filename: “{app}\curl-7.61.0-win64-mingw\bin\startup.bat”;Flags:runhidden;

[UninstallDelete]
;卸载删除文件目录
Type:filesandordirs;Name:"{app}\apache-tomcat-8.0.29"
Type:filesandordirs;Name:"{app}\mysql-5.5.40-winx64"
Type:filesandordirs;Name:"{app}\curl-7.61.0-win64-mingw"

--------------------------------------dbcsxm.iss end----------------------------------------------
Tomcat+jre+mysql+war集成exe文件,windows系统一键安装

到这步就结束了,整理下所需要修改和新建的文件,如下:
1、apache-tomcat-8.0.29:jre、startService.bat、service.bat、catalina.bat
2、mysql-5.5.40-winx64:my.ini、mysql_init.bat
3、curl-7.61.0-win64-mingw :startup.bat
4、Inno steup:dbcsxm.iss

最后,展示下安装成功后的文件结构,如下:
Tomcat+jre+mysql+war集成exe文件,windows系统一键安装
Tomcat+jre+mysql+war集成exe文件,windows系统一键安装
Tomcat+jre+mysql+war集成exe文件,windows系统一键安装
Tomcat+jre+mysql+war集成exe文件,windows系统一键安装
以上就是整合过程了,应该很详细了!如果整合过程中还遇到问题,个人建议单个拆分测试,排查问题,最后再整合,脚本都是可以单独执行的~