使用Inno Setup 打包jdk、mysql、tomcat、webapp等爲一個exe安裝包

之前一直都沒涉及到打包安裝方面的東西,都是另一個同事負責的,使用的工具(installshield)也比較高大上一點,可是後來他離職以後接受的同事也只能是在這個基礎上做個簡單的配置,然後打包,可是現在做的項目和原來的完全不一樣以後就不能使用之前的了,只能是自己硬着頭皮來弄個比較簡單快捷的了。

切入正題,如標題所述使用inno setup來打包一個java web 相關的內容爲一個exe,.net web類似,這個工具可以在網上直接找到下載,有漢化版的,並且裏面也有幫助手冊可以參考。把裏面的一些敏感信息已經做了替代,這些都是可以根據你自己情況來修改的。下面直接上乾貨。

打包和發佈的內容
jdk(1.6/1.7/1.8)、mysql(5.5~)、tomcat(6.0/7.0/8.0)、ftp服務器、webapp、.Net服務、C++服務(請諸位無視項目中技術的複雜行,都是歷史原因)
打包腳本和bat腳本中涉及到,文件拷貝、ini配置文件修改、xml配置文件修改、服務安裝停止啓動、.net服務安裝、環境變量配置、數據庫初始化等,唯獨缺少註冊表和防火牆配置(%>_<%)
打包腳本
```
11; 腳本由 Inno Setup 腳本嚮導 生成!
; 有關創建 Inno Setup 腳本文件的詳細資料請查閱幫助文檔!

#define MyAppName “abc”
#define MyAppVersion “1.0”
#define MyAppPublisher “aaa”
#define MyAppURL “http://www.abc.com/

[Setup]
; 注: AppId的值爲單獨標識該應用程序。
; 不要爲其他安裝程序使用相同的AppId值。
; (生成新的GUID,點擊 工具|在IDE中生成GUID。)
AppId={{9E044575-9CD9-4751-B0BE-F6758BA94548}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}{#MyAppName}
DefaultGroupName=XX管理軟件(abc)
AllowNoIcons=yes
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
[Files]
;拷貝tomcat
Source:“Source\apache-tomcat-6.0.41*”;DestDir:"{app}\tomcat6.0";Flags:igNoreversion recursesubdirs createallsubdirs
;拷貝jdk
Source:“Source\jdk1.6.0_43*”;DestDir:"{app}\jdk1.6";Flags:igNoreversion recursesubdirs createallsubdirs
;拷貝mysql
Source:“Source\MySql5.5*”;DestDir:"{app}\MySql5.5";Flags:igNoreversion recursesubdirs createallsubdirs
;拷貝源代碼
Source:“Source\abc*”;DestDir:"{app}\tomcat6.0\webapps\ROOT";Flags:igNoreversion recursesubdirs createallsubdirs
;拷貝sdk
Source:“Source\Sdk*”;DestDir:"{app}\Sdk";Flags:igNoreversion recursesubdirs createallsubdirs
;拷貝服務器
Source:“Source\Server*”;DestDir:"{app}\Server";Flags:igNoreversion recursesubdirs createallsubdirs
;拷貝ftp
Source:“Source\FtpServer*”;DestDir:"{app}\FtpServer";Flags:igNoreversion recursesubdirs createallsubdirs
;拷貝bat
Source:“Source*”;DestDir:"{app}";
;拷貝桌面快捷方式
Source:“Source\xx系統.url”;DestDir:"{userdesktop}\xx系統";
[Languages]
Name: “chinesesimp”; MessagesFile: “compiler:Default.isl”
[Icons]
Name: “{group}{cm:ProgramOnTheWeb,{#MyAppName}}”; Filename: “{#MyAppURL}”
Name: “{group}{cm:UninstallProgram,{#MyAppName}}”; Filename: “{uninstallexe}”
[INI]
;修改數據庫配置文件
Filename:"{app}\MySql5.5\my.ini";Section:“mysqld”;Key:“basedir”; String:"{app}\MySql5.5"
Filename:"{app}\MySql5.5\my.ini";Section:“mysqld”;Key:“datadir”; String:"{app}\MySql5.5\data"
Filename:"{app}\MySql5.5\my.ini";Section:“mysqld”;Key:“port”; String:“3308”
Filename:"{app}\MySql5.5\my.ini";Section:“client”;Key:“port”; String:“3308”
;修改服務器配置文件
Filename:"{app}\Server\init.ini";Section:“RegAddr”;Key:“port”; String:“5556”
Filename:"{userdesktop}\xx系統.url";Section:“InternetShortcut”;Key:“URL”; String:“http://127.0.0.1:7070/
[Run]
;修改tomcat配置文件
Filename:"{app}\loading.bat";AfterInstall:ConfigXml(ExpandConstant(’{app}\tomcat6.0\conf\server.xml’),’/Server/Service/Connector’,‘port’,‘7070’)
;修改web數據庫連接配置文件
Filename:"{app}\loading.bat";AfterInstall:ConfigXml(ExpandConstant(’{app}\tomcat6.0\webapps\ROOT\META-INF\Context.xml’),’/Context/Resource’,‘password’,‘123456’)
Filename:"{app}\loading.bat";AfterInstall:ConfigXml(ExpandConstant(’{app}\tomcat6.0\webapps\ROOT\META-INF\Context.xml’),’/Context/Resource’,‘url’,‘jdbc:mysql://127.0.0.1:3308/abc?characterEncoding=UTF-8’)
;修改FTP配置文件
Filename:"{app}\loading.bat";AfterInstall:ConfigXml(ExpandConstant(’{app}\FtpServer\FileZilla Server.xml’),’/FileZillaServer/Users/User’,‘Name’,‘admin’)
Filename:"{app}\loading.bat";AfterInstall:ConfigXml2(ExpandConstant(’{app}\FtpServer\FileZilla Server.xml’),’/FileZillaServer/Users/User/Option[0]’,‘e10adc3949ba59abbe56e057f20f883e’)
Filename:"{app}\loading.bat";AfterInstall:ConfigXml(ExpandConstant(’{app}\FtpServer\FileZilla Server.xml’),’/FileZillaServer/Users/User/Permissions/Permission’,‘Dir’,ExpandConstant(’{app}\tomcat6.0\webapps\ROOT\SystemFile’))
;修改服務配置文件
Filename:"{app}\loading.bat";AfterInstall:ConfigXml(ExpandConstant(’{app}\Sdk\abc.config’),’/configuration/appSettings/add[1]’,‘value’,‘127.0.0.1’)
Filename:"{app}\loading.bat";AfterInstall:ConfigXml(ExpandConstant(’{app}\Sdk\abc.config’),’/configuration/appSettings/add[2]’,‘value’,‘5556’)
Filename:"{app}\loading.bat";AfterInstall:ConfigXml(ExpandConstant(’{app}\Sdk\abc.config’),’/configuration/appSettings/add[3]’,‘value’,‘127.0.0.1’)
Filename:"{app}\loading.bat";AfterInstall:ConfigXml(ExpandConstant(’{app}\Sdk\abc.config’),’/configuration/appSettings/add[4]’,‘value’,‘7070’)
Filename:"{app}\install.bat";Description:“正在啓動或配置相關程序”;
[UninstallRun]
Filename:"{app}\uninstall.bat";
[UninstallDelete]
Type:filesandordirs;Name:"{app}\Server"
Type:filesandordirs;Name:"{app}\MySql5.5"
Type:filesandordirs;Name:"{app}\Sdk"
Type:filesandordirs;Name:"{app}\tomcat6.0"
Type:files;Name:"{app}\InstallUtil.InstallLog"
[Code]
procedure ConfigXml2(xmlPath:String;xPath:String;innerText:String);
var
XMLDocument,XMLRoot,XMLNode:Variant;
begin
try
XMLDocument := CreateOleObject(‘MSXML2.DOMDocument’);
XMLDocument.async := False;
XMLDocument.resolveExternals := False;
XMLDocument.load(xmlPath);
XMLRoot := XMLDocument.documentElement;
XMLNode:=XMLRoot.SelectSingleNode(xPath);
XMLNode.Text:=innerText;
XMLDocument.Save(xmlPath);
except
MsgBox(‘xml error’, mbInformation, mb_Ok);
end;
end;
procedure ConfigXml(xmlPath:String;xPath:String;attrName:String;attrValue:String);
var
XMLDocument,XMLRoot,XMLNode:Variant;
begin
try
XMLDocument := CreateOleObject(‘MSXML2.DOMDocument’);
XMLDocument.async := False;
XMLDocument.resolveExternals := False;
XMLDocument.load(xmlPath);
XMLRoot := XMLDocument.documentElement;
XMLNode:=XMLRoot.SelectSingleNode(xPath);
XMLNode.Attributes.GetNamedItem(attrName).Value:=attrValue;
XMLDocument.Save(xmlPath);
except
MsgBox(‘xml error’, mbInformation, mb_Ok);
end;
end;1
```
打包腳本調用的bat安裝腳本
@echo off
title 運維繫統正在安裝中,請不要手動關閉
color 0a
echo jdk 環境變量
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment” /v JAVA_HOME /t REG_EXPAND_SZ /d “%cd%\jdk1.6” /f
echo tomcat 環境變量
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment” /v CATALINA_HOME /t REG_EXPAND_SZ /d “%cd%\tomcat6.0” /f
echo 系統環境變量
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment” /v “PATH” /d “%PATH%;%cd%\jdk1.6\bin;%cd%\tomcat6.0\bin;” /f
echo 啓動mysql並更新密碼
“%cd%\MySql5.5\bin\mysqld.exe” --install “abcMysql” --defaults-file="%cd%\MySql5.5\my.ini"
net start abcMysql
sc config abcMysql start=auto
ping -n 30 127.1>nul
“%cd%\MySql5.5\bin\mysql.exe” --defaults-file="%cd%\MySql5.5\my.ini" -u root -e “UPDATE mysql.user SET Password=old_password(‘123456’) WHERE User=‘root’ or User=’’;”
“%cd%\MySql5.5\bin\mysql.exe” --defaults-file="%cd%\MySql5.5\my.ini" -u root -e “FLUSH PRIVILEGES;”
echo 初始化mysql數據庫
“%cd%\MySql5.5\bin\mysql.exe” -uroot -p123456 < “%cd%\tomcat6.0\webapps\ROOT\abc.sql”
net stop abcMysql
net start abcMysql
echo 安裝ftp
“%cd%\FtpServer\FileZilla server.exe” /install auto
“%cd%\FtpServer\FileZilla server.exe” /start
echo 安裝服務器
sc create abcMessageService binpath= “%cd%\Server\Server.exe” displayname= “abcMessageService” start= auto
Net Start abcMessageService
echo 啓動tomcat
set JAVA_HOME=%cd%\jdk1.6
set CATALINA_HOME=%cd%\tomcat6.0
set CATALINA_BASE=%cd%\tomcat6.0
cd .\tomcat6.0\bin
call service.bat install
sc config abcTomcat6 start=auto
net start abcTomcat6
cd …
echo 安裝服務
%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\installutil.exe “%cd%\Sdk\abc.exe”
Net Start abcService
sc config abcService start=auto
exit

打包腳本調用的bat卸載腳本
@echo off
title abc系統正在卸載中,請不要手動關閉
color 0a
echo 刪除環境變量
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 CATALINA_HOME /f
echo 停止並刪除tomcat
net stop abcTomcat6
cd .\tomcat6.0\bin
call service.bat remove
cd …
echo 停止並刪除mysql
net stop abcMysql
sc delete abcMysql
echo 停止並卸載FTP
“%cd%\FtpServer\FileZilla server.exe” /stop
“%cd%\FtpServer\FileZilla server.exe” /uninstall
echo 卸載註冊服務器
Net Stop abcMessageService
sc delete abcMessageService
echo 卸載運維服務
Net Stop abcService
%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\installutil.exe -u “%cd%\Sdk\abc.exe”
sc delete abcService
exit
打包腳本調用的bat等待腳本
@echo off
echo pause;

其他相關
1.建議把要打包的內容都放在同一個目錄下面
2.自己新建一個ie網站快捷方式,用記事本打開以後修改成自己app的連接地址
3.這個ftp是使用的FileZilla,配置文件中的密碼是標準md5加密
4.代碼裏面的東西可以根據個人項目的實際情況做適當的調整。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章