自Javaweb系统打包成exe安装文件.docx
《自Javaweb系统打包成exe安装文件.docx》由会员分享,可在线阅读,更多相关《自Javaweb系统打包成exe安装文件.docx(31页珍藏版)》请在冰豆网上搜索。
自Javaweb系统打包成exe安装文件
Javaweb系统打包成exe安装文件
一、工具准备
1、NSIS打包工具:
下载并安装;
2、NSIS安装脚本的编辑器HMNISEditor:
.net下载并安装
二、运行环境准备—JDK
1、新建打包用的文件夹(本人是在D盘根目录下创建的webExe,即D:
\webExe);
2、JDK本人用的是jdk-6u18,将安装好的JDK目录直接拷贝到目录webExe下就行(绿色版本的也可以)。
三、应用程序准备—Tomcat及web应用系统
1、免安装版本的tomcat,本人用的是apache-tomcat-6.0.35,将其放到目录webExe下,并将Web应用系统发布进webapps中。
四、数据库准备—mysql及数据
1、下载一个免安装版本的mysql(本人操作系统是WIN732位,下载的是mysql-noinstall-v5.1.55.zip),解压缩到D盘;
2、将主目录名mysql-5.1.55-win32修改为简单的mysql5(不修改也行,建议修改简单);
3、找到文件my-small.ini改名为my.ini(也可以是将my-huge.ini、my-large.ini、my-medium.ini中任意一个改名为my.ini);
4、将my.ini打开进行配置:
#ThefollowingoptionswillbepassedtoallMySQLclients
[client]
#password=your_password
port=3306
socket=MySQL
default-character-set=utf8--客户端编码
#Herefollowsentriesforsomespecificprograms
#TheMySQLserver
[mysqld]
port=3306
socket=MySQL
default-character-set=utf8--服务器端
basedir=D:
/mysql5--路径
datadir=D:
/mysql5/data--数据库路径
default-storage-engine=MyISAM--默认数据库引擎为MyISAM
5、在本地启动服务,导入数据库及数据
(如果本机已经安装了mysql,记得关掉当前的服务)
运行cmd.exe进入DOS窗口,进到D:
\mysql5\bin目录
注册服务:
mysqld--installmysql5--defaults-file=d:
\mysql5\my.ini
可能会出现Install/RemoveoftheServiceDenied!
错误,这时要关闭DOS窗口,以管理员的身份运行cmd.exe程序。
启动服务:
netstartmysql5
使用命令或mysql第三方客户端,创建数据库并导入数据
停止服务:
netstopmysql5
参考图片—
6、停止服务后,将mysql5整个目录剪切到目录webExe下
五、打包脚本准备
1、当前目录情况如下图:
2、脚本文件AddPath.nsh(复制到编辑器HMNISEdit中保存)
!
ifndef_AddToPath_nsh
!
define_AddToPath_nsh
!
verbose3
!
include"WinMessages.NSH"
!
verbose4
!
ifndefWriteEnvStr_RegKey
!
ifdefALL_USERS
!
defineWriteEnvStr_RegKey\
'HKLM"SYSTEM\CurrentControlSet\Control\SessionManager\Environment"'
!
else
!
defineWriteEnvStr_RegKey'HKCU"Environment"'
!
endif
!
endif
;AddToPath-Addsthegivendirtothesearchpath.
;Input-headofthestack
;Note-Win9xsystemsrequiresreboot
FunctionAddToPath
Exch$0
Push$1
Push$2
Push$3
#don'taddifthepathdoesn'texist
If"$0\*.*"""AddToPath_done
ReadEnvStr$1PATH
Push"$1;"
Push"$0;"
CallStrStr
Pop$2
StrCmp$2""""AddToPath_done
Push"$1;"
Push"$0\;"
CallStrStr
Pop$2
StrCmp$2""""AddToPath_done
GetFullPathName/SHORT$3$0
Push"$1;"
Push"$3;"
CallStrStr
Pop$2
StrCmp$2""""AddToPath_done
Push"$1;"
Push"$3\;"
CallStrStr
Pop$2
StrCmp$2""""AddToPath_done
CallIsNT
Pop$1
StrCmp$11AddToPath_NT
;NotonNT
StrCpy$1$WINDIR2
$1"$1\autoexec.bat"a
$1-1END
$1$2
IntCmp$2260+2+2#DOSEOF
$1-1END#writeoverEOF
$1"$\r$\nSETPATH=%PATH%;$3$\r$\n"
$1
SetRebootFlagtrue
GotoAddToPath_done
AddToPath_NT:
ReadRegStr$1${WriteEnvStr_RegKey}"PATH"
StrCmp$1""AddToPath_NTdoIt
Push$1
CallTrim
Pop$1
StrCpy$0"$1;$0"
AddToPath_NTdoIt:
WriteRegExpandStr${WriteEnvStr_RegKey}"PATH"$0
SendMessage${HWND_BROADCAST}${WM_WININICHANGE}0"STR:
Environment"/TIMEOUT=5000
AddToPath_done:
Pop$3
Pop$2
Pop$1
Pop$0
FunctionEnd
;RemoveFromPath-Removeagivendirfromthepath
;Input:
headofthestack
Functionun.RemoveFromPath
Exch$0
Push$1
Push$2
Push$3
Push$4
Push$5
Push$6
IntFmt$6"%c"26#DOSEOF
Callun.IsNT
Pop$1
StrCmp$11unRemoveFromPath_NT
;NotonNT
StrCpy$1$WINDIR2
$1"$1\autoexec.bat"r
GetTemp$4
$2$4w
GetFullPathName/SHORT$0$0
StrCpy$0"SETPATH=%PATH%;$0"
GotounRemoveFromPath_dosLoop
unRemoveFromPath_dosLoop:
$1$3
StrCpy$5$31-1#readlastchar
StrCmp$5$60+2#ifDOSEOF
StrCpy$3$3-1#removeDOSEOFsowecancompare
StrCmp$3"$0$\r$\n"unRemoveFromPath_dosLoopRemoveLine
StrCmp$3"$0$\n"unRemoveFromPath_dosLoopRemoveLine
StrCmp$3"$0"unRemoveFromPath_dosLoopRemoveLine
StrCmp$3""unRemoveFromPath_dosLoopEnd
$2$3
GotounRemoveFromPath_dosLoop
unRemoveFromPath_dosLoopRemoveLine:
SetRebootFlagtrue
GotounRemoveFromPath_dosLoop
unRemoveFromPath_dosLoopEnd:
$2
$1
StrCpy$1$WINDIR2
Delete"$1\autoexec.bat"
CopyFiles/SILENT$4"$1\autoexec.bat"
Delete$4
GotounRemoveFromPath_done
unRemoveFromPath_NT:
ReadRegStr$1${WriteEnvStr_RegKey}"PATH"
StrCpy$5$11-1#copylastchar
StrCmp$5";"+2#iflastchar!
=;
StrCpy$1"$1;"#append;
Push$1
Push"$0;"
Callun.StrStr;Find`$0;`in$1
Pop$2;posofourdir
StrCmp$2""unRemoveFromPath_done
;else,itisinpath
#$0-pathtoadd
#$1-pathvar
StrLen$3"$0;"
StrLen$4$2
StrCpy$5$1-$4#$5isnowthepartbeforethepathtoremove
StrCpy$6$2""$3#$6isnowthepartafterthepathtoremove
StrCpy$3$5$6
StrCpy$5$31-1#copylastchar
StrCmp$5";"0+2#iflastchar==;
StrCpy$3$3-1#removelastchar
WriteRegExpandStr${WriteEnvStr_RegKey}"PATH"$3
SendMessage${HWND_BROADCAST}${WM_WININICHANGE}0"STR:
Environment"/TIMEOUT=5000
unRemoveFromPath_done:
Pop$6
Pop$5
Pop$4
Pop$3
Pop$2
Pop$1
Pop$0
FunctionEnd
;AddToEnvVar-Addsthegivenvaluetothegivenenvironmentvar
;Input-headofthestack$0environementvariable$1=valuetoadd
;Note-Win9xsystemsrequiresreboot
FunctionAddToEnvVar
Exch$1;$1hasenvironmentvariablevalue
Exch
Exch$0;$0hasenvironmentvariablename
DetailPrint"Adding$1to$0"
Push$2
Push$3
Push$4
ReadEnvStr$2$0
Push"$2;"
Push"$1;"
CallStrStr
Pop$3
StrCmp$3""""AddToEnvVar_done
Push"$2;"
Push"$1\;"
CallStrStr
Pop$3
StrCmp$3""""AddToEnvVar_done
CallIsNT
Pop$2
StrCmp$21AddToEnvVar_NT
;NotonNT
StrCpy$2$WINDIR2
$2"$2\autoexec.bat"a
$2-1END
$2$3
IntCmp$3260+2+2#DOSEOF
$2-1END#writeoverEOF
$2"$\r$\nSET$0=%$0%;$4$\r$\n"
$2
SetRebootFlagtrue
GotoAddToEnvVar_done
AddToEnvVar_NT:
ReadRegStr$2${WriteEnvStr_RegKey}$0
StrCpy$3$21-1#copylastchar
StrCmp$3";"0+2#iflastchar==;
StrCpy$2$2-1#removelastchar
StrCmp$2""AddToEnvVar_NTdoIt
StrCpy$1"$2;$1"
AddToEnvVar_NTdoIt:
WriteRegExpandStr${WriteEnvStr_RegKey}$0$1
SendMessage${HWND_BROADCAST}${WM_WININICHANGE}0"STR:
Environment"/TIMEOUT=5000
AddToEnvVar_done:
Pop$4
Pop$3
Pop$2
Pop$0
Pop$1
FunctionEnd
;RemoveFromEnvVar-Removeagivenvaluefromaenvironmentvar
;Input:
headofthestack
Functionun.RemoveFromEnvVar
Exch$1;$1hasenvironmentvariablevalue
Exch
Exch$0;$0hasenvironmentvariablename
DetailPrint"Removing$1from$0"
Push$2
Push$3
Push$4
Push$5
Push$6
Push$7
IntFmt$7"%c"26#DOSEOF
Callun.IsNT
Pop$2
StrCmp$21unRemoveFromEnvVar_NT
;NotonNT
StrCpy$2$WINDIR2
$2"$2\autoexec.bat"r
GetTemp$5
$3$5w
GetFullPathName/SHORT$1$1
StrCpy$1"SET$0=%$0%;$1"
GotounRemoveFromEnvVar_dosLoop
unRemoveFromEnvVar_dosLoop:
$2$4
StrCpy$6$41-1#readlastchar
StrCmp$6$70+2#ifDOSEOF
StrCpy$4$4-1#removeDOSEOFsowecancompare
StrCmp$4"$1$\r$\n"unRemoveFromEnvVar_dosLoopRemoveLine
StrCmp$4"$1$\n"unRemoveFromEnvVar_dosLoopRemoveLine
StrCmp$4"$1"unRemoveFromEnvVar_dosLoopRemoveLine
StrCmp$4""unRemoveFromEnvVar_dosLoopEnd
$3$4
GotounRemoveFromEnvVar_dosLoop
unRemoveFromEnvVar_dosLoopRemoveLine:
SetRebootFlagtrue
GotounRemoveFromEnvVar_dosLoop
unRemoveFromEnvVar_dosLoopEnd:
$3
$2
StrCpy$2$WINDIR2
Delete"$2\autoexec.bat"
CopyFiles/SILENT$5"$2\autoexec.bat"
Delete$5
GotounRemoveFromEnvVar_done
unRemoveFromEnvVar_NT:
ReadRegStr$2${WriteEnvStr_RegKey}$0
StrCpy$6$21-1#copylastchar
StrCmp$6";"+2#iflastchar!
=;
StrCpy$2"$2;"#append;
Push$2
Push"$1;"
Callun.StrStr;Find`$1;`in$2
Pop$3;posofourdir
StrCmp$3""unRemoveFromEnvVar_done
;else,itisinpath
#$1-pathtoadd
#$2-pathvar
StrLen$4"$1;"
StrLen$5$3
StrCpy$6$2-$5#$6isnowthepartbeforethepathtoremove
StrCpy$7$3""$4#$7isnowthepartafterthepathtoremove
StrCpy$4$6$7
StrCpy$6$41-1#copylastchar
StrCmp$6";"0+2#iflastchar==;
StrCpy$4$4-1#removelastchar
WriteRegExpandStr${WriteEnvStr_RegKey}$0$4
;deleteregvalueifnull
StrCmp$4""0+2#ifnulldeletereg
DeleteRegValue${WriteEnvStr_RegKey}$0
SendMessage${HWND_BROADCAST}${WM_WININICHANGE}0"STR:
Environment"/TIMEOUT=5000
unRemoveFromEnvVar_done:
Pop$7
Pop$6
Pop$5
Pop$4
Pop$3
Pop$2
Pop$1
Pop$0
FunctionEnd
!
ifndefIsNT_KiCHiK
!
defineIsNT_KiCHiK
###########################################
#UtilityFunctions#
###########################################
;IsNT
;noinput
;output,topofthestack=1ifNTor0ifnot
;
;Usage:
;CallIsNT
;Pop$R0
;($R0atthispointis1or0)
!
macroIsNTun
Function${un}IsNT
Push$0
ReadRegStr$0HKLM"SOFTWARE\Microsoft\WindowsNT\CurrentVersion"CurrentVersion
StrCmp$0""0IsNT_yes
;wearenotNT.
Pop$0
Push0
Return
IsNT_yes:
;NT!
!
!
Pop$0
Push1
FunctionEnd
!
macroend
!
insertmacroIsNT""
!
insertmacroIsNT"un."
!
endif;IsNT_KiCHiK
;StrStr
;input,topofstack=stringtosearchfor
;topofstack-1=stringtosearchin
;output,topofstack(replaceswiththeportionofthestringremaining)
;modifiesnoothervariables.
;
;Usage:
;Push"thisisalongassstring"
;Push"ass"
;CallStrStr
;Pop$R0
;($R0atthispointis"assstring")
!
macroStrStrun
Function${un}StrStr
Exch$R1;st=haystack,old$R1,$R1=needle
Exch;st=old$R1,haystack
Exch$R2;st=old$R1,old$R2,$R2=haystack
Push$R3
Push$R4
Push$R5
StrLen$R3$R1
StrCpy$R40
;$R1=needle
;$R2