目的:將B/S架構(gòu)的網(wǎng)站荆残,打包成exe文件,以使得用戶可以像本地系統(tǒng)一樣下載亿笤、安裝翎迁。
工具:innosetup打包軟件、【apache-tomcat净薛、mysql汪榔、jdk】的綠色版。
內(nèi)容:
1.將網(wǎng)站war包置于tomcat的webapps文件夾下罕拂;
2.將數(shù)據(jù)庫(kù)置于mysql的data文件夾下(注:此處放置源數(shù)據(jù)庫(kù)整個(gè)庫(kù)揍异。若為了方便起見全陨,也可放置導(dǎo)出的.sql文件爆班,在startServer.bat書寫sql命令以在安裝時(shí)再生成數(shù)據(jù)庫(kù))
3.將jdk文件夾置于tomcat-bin-java文件夾下;
主要功能:
1.安裝功能:設(shè)置jdk的環(huán)境變量辱姨、安裝啟動(dòng)tomcat\mysql服務(wù)柿菩。
2.卸載功能:刪除jdk的環(huán)境變量,刪除tomcat\mysql服務(wù)雨涛。
文件夾目錄:
文件內(nèi)容:
startService.bat
——用以安裝枢舶、啟動(dòng)tomcat(注意Tomcat的版本)。
——要求tomcat-bin中service.bat文件替久。若沒有凉泄,可利用該bat配置環(huán)境變量來(lái)安裝tomcat。
【注:service.bat和配置環(huán)境變量是兩種不同的安裝tomcat的方式】
echo -------tomcat begin--------
::call 是用來(lái)調(diào)用另一個(gè)批處理文件蚯根,? install 是用來(lái)安裝注冊(cè)服務(wù)到windows的服務(wù)里面
call "%~dp0%service.bat" install
echo -------tomcat install end------------------
::配置服務(wù)開機(jī)自啟動(dòng)
sc config Tomcat7 start= auto
net start Tomcat7
exit
startServer.bat
——用以安裝后众、啟動(dòng)mysql
——可在bat文件中再執(zhí)行sql生成數(shù)據(jù)庫(kù)。本文直接使用了數(shù)據(jù)庫(kù)颅拦,所以不必再進(jìn)行過多配置蒂誉。
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
::如有必要,此處可用戶名密碼登錄距帅,可執(zhí)行sql文件右锨、配置用戶名密碼
::"%cd%\bin\mysql.exe" -h localhost -u root --password=root
::< "%cd%\SqlFile\yjbg.sql"
echo -------finished-------
autoInstallJDK.bat
——配置jdk環(huán)境
——如果該jdk環(huán)境已經(jīng)存在則不再增加path(似乎并沒有起作用,哈)
@echo off
echo? ------begin----
:: 退到上級(jí)目錄
cd ..
:: 獲取jdk 的全路徑碌秸,全路徑=當(dāng)前路徑+jdk路徑
:: "%~dp0" 這個(gè)是最起始的條用bat的cmd 的路徑 所以我們要使用cd ..后退一個(gè)目錄后用"%cd%" 來(lái)獲取當(dāng)前目錄
echo? "%~dp0"
echo "%cd%"
::設(shè)置jdkpath變量
set jdkpath=%cd%\apache-tomcat-7.0.55\bin\java\jdk1.7.0_80
echo %jdkpath%
::setx variable value -m
:: setx 這個(gè)是用來(lái)設(shè)置環(huán)境變量的绍移,并且會(huì)寫入注冊(cè)表. variable,會(huì)被覆蓋,此操作不可逆的
:: variable 代表鍵? ? value代表值? ? -m代表寫入系統(tǒng)環(huán)境變量,如果沒有該參數(shù)會(huì)寫入當(dāng)前用戶環(huán)境變量.
setx JAVA_HOME? "%jdkpath%"? -m
setx CLASSPATH? ".;%%JAVA_HOME%%\lib\tools.jar;%%JAVA_HOME%%\lib\dt.jar" -m
echo %Path%
::追加path環(huán)境變量? find 后面/i代表忽略大小寫? &&執(zhí)行成功執(zhí)行的命令? ||執(zhí)行失敗執(zhí)行的命令
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
::設(shè)置當(dāng)前用戶環(huán)境變量
setx Path "%%JAVA_HOME%%\bin;%Path%"
)
exit
uninstall.bat
——卸載
——似乎不能停止tomcat7(所需時(shí)間太久了。讥电。蹂窖。)
@echo off
title 正在卸載中,請(qǐng)不要關(guān)閉
color 0a
echo 刪除環(huán)境變量
echo 刪除Java允趟、MySQL恼策、Tomcat環(huán)境中...
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 刪除成功
研究報(bào)告管理系統(tǒng).bat
——啟動(dòng)網(wǎng)站首頁(yè)。(再此之前,啟動(dòng)tomcat涣楷、mysql服務(wù))
——雖然分唾,上述過程已經(jīng)設(shè)置開機(jī)啟動(dòng)tomcat、mysql服務(wù),但擔(dān)心用戶手工停止了狮斗,所以啟動(dòng)首頁(yè)時(shí)再次啟動(dòng)绽乔。
@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文件)
——對(duì)該文件夾內(nèi)容進(jìn)行打包,可利用向?qū)Чぞ呱商及部筛鶕?jù)代碼自己修改折砸。
; 腳本由 Inno Setup 腳本向?qū)?生成!
; 有關(guān)創(chuàng)建 Inno Setup 腳本文件的詳細(xì)資料請(qǐng)查閱幫助文檔沙峻!
#define MyAppName "yjbg"
#define MyAppVersion "1.0"
#define MyAppPublisher "njust"
#define MyAppURL "http://localhost:8080/yjbg/"
[Setup]
; 注: AppId的值為單獨(dú)標(biāo)識(shí)該應(yīng)用程序睦授。
; 不要為其他安裝程序使用相同的AppId值。
; (生成新的GUID摔寨,點(diǎn)擊 工具|在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}
;是否打開->可選安裝開始菜單項(xiàng)
AllowNoIcons=yes
OutputDir=D:\inno
OutputBaseFilename=yjbgsetup
;安裝圖標(biāo)
SetupIconFile=C:\Users\lux\Desktop\研究報(bào)告管理系統(tǒng)\logo.ico
Compression=lzma
SolidCompression=yes
[Languages]
Name: "chinesesimp"; MessagesFile: "compiler:Default.isl"
[Files]
Source: "C:\Users\lux\Desktop\研究報(bào)告管理系統(tǒng)\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; 注意: 不要在任何共享系統(tǒng)文件上使用“Flags: ignoreversion”
;開始菜單,桌面快捷方式
[Icons]
Name: "{commondesktop}\研究報(bào)告管理系統(tǒng)"; Filename:"{app}\研究報(bào)告管理系統(tǒng).bat"; Tasks: desktopicon
;Name: "{commondesktop}\{#MyAppName}"; Filename:"{#MyAppURL}"; Tasks: desktopicon
;Name: "{commondesktop}\查體"; Filename: http://localhost:8080(桌面創(chuàng)建主頁(yè)的快捷方式)
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: checkablealone
[INI]
;修改數(shù)據(jù)庫(kù)配置文件
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}\研究報(bào)告管理系統(tǒng).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"
問題總結(jié):
——沒有實(shí)現(xiàn)數(shù)據(jù)庫(kù)的sql創(chuàng)建是复,而是將源庫(kù)本身同時(shí)打包删顶。
——卸載過程并不能卸載干凈,包括tomcat淑廊,環(huán)境變量path等逗余。
參考:
1.一個(gè)比較完整的Inno Setup 安裝腳本
http://blog.csdn.net/jac3326/article/details/52487454
2.用inno Setup制作web項(xiàng)目安裝包
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