目的:将B/S架构的网站,打包成exe文件,以使得用户可以像本地系统一样下载、安装。
工具:innosetup打包软件、【apache-tomcat、mysql、jdk】的绿色版。
内容:
1.将网站war包置于tomcat的webapps文件夹下;
2.将数据库置于mysql的data文件夹下(注:此处放置源数据库整个库。若为了方便起见,也可放置导出的.sql文件,在startServer.bat书写sql命令以在安装时再生成数据库)
3.将jdk文件夹置于tomcat-bin-java文件夹下;
主要功能:
1.安装功能:设置jdk的环境变量、安装启动tomcat\mysql服务。
2.卸载功能:删除jdk的环境变量,删除tomcat\mysql服务。
文件夹目录:
文件内容:
startService.bat
——用以安装、启动tomcat(注意Tomcat的版本)。
——要求tomcat-bin中service.bat文件。若没有,可利用该bat配置环境变量来安装tomcat。
【注:service.bat和配置环境变量是两种不同的安装tomcat的方式】
echo -------tomcat begin--------
::call 是用来调用另一个批处理文件, install 是用来安装注册服务到windows的服务里面
call "%~dp0%service.bat" install
echo -------tomcat install end------------------
::配置服务开机自启动
sc config Tomcat7 start= auto
net start Tomcat7
exit
startServer.bat
——用以安装、启动mysql
——可在bat文件中再执行sql生成数据库。本文直接使用了数据库,所以不必再进行过多配置。
cd /d %~dp0
cd ..
"%cd%\bin\mysqld.exe" install mysql --defaults-file="%cd%\my.ini"
echo -------mysql service install success--------
net start mysql
sc config mysql start=auto
::如有必要,此处可用户名密码登录,可执行sql文件、配置用户名密码
::"%cd%\bin\mysql.exe" -h localhost -u root --password=root
::< "%cd%\SqlFile\yjbg.sql"
echo -------finished-------
autoInstallJDK.bat
——配置jdk环境
——如果该jdk环境已经存在则不再增加path(似乎并没有起作用,哈)
@echo off
echo ------begin----
:: 退到上级目录
cd ..
:: 获取jdk 的全路径,全路径=当前路径+jdk路径
:: "%~dp0" 这个是最起始的条用bat的cmd 的路径 所以我们要使用cd ..后退一个目录后用"%cd%" 来获取当前目录
echo "%~dp0"
echo "%cd%"
::设置jdkpath变量
set jdkpath=%cd%\apache-tomcat-7.0.55\bin\java\jdk1.7.0_80
echo %jdkpath%
::setx variable value -m
:: setx 这个是用来设置环境变量的,并且会写入注册表. variable,会被覆盖,此操作不可逆的
:: variable 代表键 value代表值 -m代表写入系统环境变量,如果没有该参数会写入当前用户环境变量.
setx JAVA_HOME "%jdkpath%" -m
setx CLASSPATH ".;%%JAVA_HOME%%\lib\tools.jar;%%JAVA_HOME%%\lib\dt.jar" -m
echo %Path%
::追加path环境变量 find 后面/i代表忽略大小写 &&执行成功执行的命令 ||执行失败执行的命令
echo %Path%|find /i "%JAVA_HOME%" && set IsNull=true || set IsNull=false
echo %IsNull%
if not %IsNull%==true (
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_SZ /d "%Path%;%%JAVA_HOME%%\bin;%%JAVA_HOME%%\jre\bin" /f
::设置当前用户环境变量
setx Path "%%JAVA_HOME%%\bin;%Path%"
)
exit
uninstall.bat
——卸载
——似乎不能停止tomcat7(所需时间太久了。。。)
@echo off
title 正在卸载中,请不要关闭
color 0a
echo 删除环境变量
echo 删除Java、MySQL、Tomcat环境中...
echo %~dp0%java\jdk
reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v JAVA_HOME /f
reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v CLASSPATH /f
echo 停止并删除Tomcat
net stop Tomcat7
cd /d %~dp0
call "%cd%\apache-tomcat-7.0.55\bin\service.bat" remove
sc delete Tomcat7
echo 停止并删除MySQL
net stop MySQL
sc delete MySQL
echo 删除成功
研究报告管理系统.bat
——启动网站首页。(再此之前,启动tomcat、mysql服务)
——虽然,上述过程已经设置开机启动tomcat、mysql服务,但担心用户手工停止了,所以启动首页时再次启动。
@echo off
net start Tomcat7
net start mysql
start http://localhost:8080/yjbg/
附:my.ini
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[client]
port=3306
default-character-set=utf8
打包文件(Inno工具的.iss文件)
——对该文件夹内容进行打包,可利用向导工具生成,也可根据代码自己修改。
; 脚本由 Inno Setup 脚本向导 生成!
; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档!
#define MyAppName "yjbg"
#define MyAppVersion "1.0"
#define MyAppPublisher "njust"
#define MyAppURL "http://localhost:8080/yjbg/"
[Setup]
; 注: AppId的值为单独标识该应用程序。
; 不要为其他安装程序使用相同的AppId值。
; (生成新的GUID,点击 工具|在IDE中生成GUID。)
AppId={{F540055E-7A69-4F7F-943A-0284DA465829}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
;是否打开->可选安装开始菜单项
AllowNoIcons=yes
OutputDir=D:\inno
OutputBaseFilename=yjbgsetup
;安装图标
SetupIconFile=C:\Users\lux\Desktop\研究报告管理系统\logo.ico
Compression=lzma
SolidCompression=yes
[Languages]
Name: "chinesesimp"; MessagesFile: "compiler:Default.isl"
[Files]
Source: "C:\Users\lux\Desktop\研究报告管理系统\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; 注意: 不要在任何共享系统文件上使用“Flags: ignoreversion”
;开始菜单,桌面快捷方式
[Icons]
Name: "{commondesktop}\研究报告管理系统"; Filename:"{app}\研究报告管理系统.bat"; Tasks: desktopicon
;Name: "{commondesktop}\{#MyAppName}"; Filename:"{#MyAppURL}"; Tasks: desktopicon
;Name: "{commondesktop}\查体"; Filename: http://localhost:8080(桌面创建主页的快捷方式)
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: checkablealone
[INI]
;修改数据库配置文件
Filename:"{app}\mysql-5.6.24-win32\my.ini";Section:"mysqld";Key:"basedir"; String:"{app}\mysql-5.6.24-win32"
Filename:"{app}\mysql-5.6.24-win32\my.ini";Section:"mysqld";Key:"datadir"; String:"{app}\mysql-5.6.24-win32\data"
Filename:"{app}\mysql-5.6.24-win32\my.ini";Section:"mysqld";Key:"port"; String:"3306"
Filename:"{app}\mysql-5.6.24-win32\my.ini";Section:"client";Key:"port"; String:"3306"
[Run]
Filename: "{app}\install\autoInstallJDK.bat";
Filename: "{app}\mysql-5.6.24-win32\bin\startServer.bat";
Filename: "{app}\apache-tomcat-7.0.55\bin\startService.bat";
Filename: "{app}\研究报告管理系统.bat";
[UninstallRun]
Filename:"{app}\uninstall\uninstall.bat";
[UninstallDelete]
Type:filesandordirs;Name:"{app}\apache-tomcat-7.0.55"
Type:filesandordirs;Name:"{app}\install"
Type:filesandordirs;Name:"{app}\mysql-5.6.24-win32"
Type:filesandordirs;Name:"{app}\uninstall"
问题总结:
——没有实现数据库的sql创建,而是将源库本身同时打包。
——卸载过程并不能卸载干净,包括tomcat,环境变量path等。
参考:
1.一个比较完整的Inno Setup 安装脚本
http://blog.csdn.net/jac3326/article/details/52487454
2.用inno Setup制作web项目安装包
http://www.cnblogs.com/xionghui/archive/2012/03/22/2411207.html
3.jdk+tomcat+mysql 打包成exe 的windows 安装文件教程
http://blog.csdn.net/liuhaomatou/article/details/52576162