Java web系统打包成exe安装文件

Java web系统打包成exe安装文件


2024年4月12日发(作者:)

Java web系统打包成exe安装文件

一、 工具准备

1、 NSIS打包工具: 下载并安装;

2、 NSIS安装脚本的编辑器HM NIS Editor:

下载并安装

二、 运行环境准备—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(本人操作系统是WIN 7 32位,下载的是

),解压缩到D盘;

2、 将主目录名mysql-5.1.55-win32修改为简单的mysql5(不修改也行,建议修

改简单);

3、 找到文件改名为(也可以是将、、

中任意一个改名为);

4、 将打开进行配置:

# The following options will be passed to all MySQL clients

[client]

#password = your_password

port = 3306

socket = MySQL

default-character-set = utf8 --客户端编码

# Here follows entries for some specific programs

# The MySQL server

[mysqld]

port = 3306

socket = MySQL

default-character-set = utf8 --服务器端

basedir=D:/mysql5 --路径

datadir=D:/mysql5/data --数据库路径

default-storage-engine = MyISAM --默认数据库引擎为MyISAM

5、 在本地启动服务,导入数据库及数据

(如果本机已经安装了mysql,记得关掉当前的服务)

运行进入DOS窗口,进到D:mysql5bin目录

注册服务:

mysqld --install mysql5 --defaults-file=d:

可能会出现Install/Remove of the Service Denied! 错误,这时要关闭DOS窗口,

以管理员的身份运行程序。

启动服务:net start mysql5

使用命令或mysql第三方客户端,创建数据库并导入数据

停止服务:net stop mysql5

参考图片—

6、 停止服务后,将mysql5整个目录剪切到目录webExe下

五、 打包脚本准备

1、 当前目录情况如下图:

2、 脚本文件(复制到编辑器HM NIS Edit中保存)

!ifndef _AddToPath_nsh

!define _AddToPath_nsh

!verbose 3

!include ""

!verbose 4

!ifndef WriteEnvStr_RegKey

!ifdef ALL_USERS

!define WriteEnvStr_RegKey

'HKLM

ManagerEnvironment"'

"SYSTEMCurrentControlSetControlSession

!else

!define WriteEnvStr_RegKey 'HKCU "Environment"'

!endif

!endif

; AddToPath - Adds the given dir to the search path.

; Input - head of the stack

; Note - Win9x systems requires reboot

Function AddToPath

Exch $0

Push $1

Push $2

Push $3

# don't add if the path doesn't exist

IfFileExists "$0*.*" "" AddToPath_done

ReadEnvStr $1 PATH

Push "$1;"

Push "$0;"

Call StrStr

Pop $2

StrCmp $2 "" "" AddToPath_done

Push "$1;"

Push "$0;"

Call StrStr

Pop $2

StrCmp $2 "" "" AddToPath_done

GetFullPathName /SHORT $3 $0

Push "$1;"

Push "$3;"

Call StrStr

Pop $2

StrCmp $2 "" "" AddToPath_done

Push "$1;"

Push "$3;"

Call StrStr

Pop $2

StrCmp $2 "" "" AddToPath_done

Call IsNT

Pop $1

StrCmp $1 1 AddToPath_NT

; Not on NT

StrCpy $1 $WINDIR 2

FileOpen $1 "$" a

FileSeek $1 -1 END

FileReadByte $1 $2

IntCmp $2 26 0 +2 +2 # DOS EOF

FileSeek $1 -1 END # write over EOF

FileWrite $1 "$r$nSET PATH=%PATH%;$3$r$n"

FileClose $1

SetRebootFlag true

Goto AddToPath_done

AddToPath_NT:

ReadRegStr $1 ${WriteEnvStr_RegKey} "PATH"

StrCmp $1 "" AddToPath_NTdoIt

Push $1

Call Trim

Pop $1

StrCpy $0 "$1;$0"

AddToPath_NTdoIt:

WriteRegExpandStr ${WriteEnvStr_RegKey} "PATH" $0

SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE}

AddToPath_done:

Pop $3

Pop $2

Pop $1

Pop $0

0

"STR:Environment" /TIMEOUT=5000

FunctionEnd

; RemoveFromPath - Remove a given dir from the path

; Input: head of the stack

Function FromPath

Exch $0

Push $1

Push $2

Push $3

Push $4

Push $5

Push $6

IntFmt $6 "%c" 26 # DOS EOF

Call

Pop $1

StrCmp $1 1 unRemoveFromPath_NT

; Not on NT

StrCpy $1 $WINDIR 2

FileOpen $1 "$" r

GetTempFileName $4

FileOpen $2 $4 w

GetFullPathName /SHORT $0 $0

StrCpy $0 "SET PATH=%PATH%;$0"

Goto unRemoveFromPath_dosLoop

unRemoveFromPath_dosLoop:

FileRead $1 $3

StrCpy $5 $3 1 -1 # read last char

StrCmp $5 $6 0 +2 # if DOS EOF

StrCpy $3 $3 -1 # remove DOS EOF so we can compare

StrCmp $3 "$0$r$n" unRemoveFromPath_dosLoopRemoveLine

StrCmp $3 "$0$n" unRemoveFromPath_dosLoopRemoveLine

StrCmp $3 "$0" unRemoveFromPath_dosLoopRemoveLine

StrCmp $3 "" unRemoveFromPath_dosLoopEnd

FileWrite $2 $3

Goto unRemoveFromPath_dosLoop

unRemoveFromPath_dosLoopRemoveLine:

SetRebootFlag true

Goto unRemoveFromPath_dosLoop

unRemoveFromPath_dosLoopEnd:

FileClose $2

FileClose $1

StrCpy $1 $WINDIR 2

Delete "$"

CopyFiles /SILENT $4 "$"

Delete $4

Goto unRemoveFromPath_done

unRemoveFromPath_NT:

ReadRegStr $1 ${WriteEnvStr_RegKey} "PATH"

StrCpy $5 $1 1 -1 # copy last char

StrCmp $5 ";" +2 # if last char != ;

StrCpy $1 "$1;" # append ;

Push $1

Push "$0;"

Call ; Find `$0;` in $1

Pop $2 ; pos of our dir

StrCmp $2 "" unRemoveFromPath_done

; else, it is in path

# $0 - path to add

# $1 - path var

StrLen $3 "$0;"

StrLen $4 $2

StrCpy $5 $1 -$4 # $5 is now the part before the path to remove

StrCpy $6 $2 "" $3 # $6 is now the part after the path to remove

StrCpy $3 $5$6

StrCpy $5 $3 1 -1 # copy last char

StrCmp $5 ";" 0 +2 # if last char == ;

StrCpy $3 $3 -1 # remove last char

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 - Adds the given value to the given environment var

; Input - head of the stack $0 environement variable $1=value to add

; Note - Win9x systems requires reboot

Function AddToEnvVar

Exch $1 ; $1 has environment variable value

Exch

Exch $0 ; $0 has environment variable name

DetailPrint "Adding $1 to $0"

Push $2

Push $3

Push $4

ReadEnvStr $2 $0

Push "$2;"

Push "$1;"

Call StrStr

Pop $3

StrCmp $3 "" "" AddToEnvVar_done

Push "$2;"

Push "$1;"

Call StrStr

Pop $3

StrCmp $3 "" "" AddToEnvVar_done

Call IsNT

Pop $2

StrCmp $2 1 AddToEnvVar_NT

; Not on NT

StrCpy $2 $WINDIR 2

FileOpen $2 "$" a

FileSeek $2 -1 END

FileReadByte $2 $3

IntCmp $3 26 0 +2 +2 # DOS EOF

FileSeek $2 -1 END # write over EOF

FileWrite $2 "$r$nSET $0=%$0%;$4$r$n"

FileClose $2

SetRebootFlag true

Goto AddToEnvVar_done

AddToEnvVar_NT:

ReadRegStr $2 ${WriteEnvStr_RegKey} $0

StrCpy $3 $2 1 -1 # copy last char

StrCmp $3 ";" 0 +2 # if last char == ;

StrCpy $2 $2 -1 # remove last char

StrCmp $2 "" AddToEnvVar_NTdoIt

StrCpy $1 "$2;$1"

AddToEnvVar_NTdoIt:

WriteRegExpandStr ${WriteEnvStr_RegKey} $0 $1

SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE}

AddToEnvVar_done:

Pop $4

Pop $3

Pop $2

Pop $0

Pop $1

FunctionEnd

0

"STR:Environment" /TIMEOUT=5000

; RemoveFromEnvVar - Remove a given value from a environment var

; Input: head of the stack

Function FromEnvVar

Exch $1 ; $1 has environment variable value

Exch

Exch $0 ; $0 has environment variable name

DetailPrint "Removing $1 from $0"

Push $2

Push $3

Push $4

Push $5

Push $6

Push $7

IntFmt $7 "%c" 26 # DOS EOF

Call

Pop $2

StrCmp $2 1 unRemoveFromEnvVar_NT

; Not on NT

StrCpy $2 $WINDIR 2

FileOpen $2 "$" r

GetTempFileName $5

FileOpen $3 $5 w

GetFullPathName /SHORT $1 $1

StrCpy $1 "SET $0=%$0%;$1"

Goto unRemoveFromEnvVar_dosLoop

unRemoveFromEnvVar_dosLoop:

FileRead $2 $4

StrCpy $6 $4 1 -1 # read last char

StrCmp $6 $7 0 +2 # if DOS EOF

StrCpy $4 $4 -1 # remove DOS EOF so we can compare

StrCmp $4 "$1$r$n" unRemoveFromEnvVar_dosLoopRemoveLine

StrCmp $4 "$1$n" unRemoveFromEnvVar_dosLoopRemoveLine

StrCmp $4 "$1" unRemoveFromEnvVar_dosLoopRemoveLine

StrCmp $4 "" unRemoveFromEnvVar_dosLoopEnd

FileWrite $3 $4

Goto unRemoveFromEnvVar_dosLoop

unRemoveFromEnvVar_dosLoopRemoveLine:

SetRebootFlag true

Goto unRemoveFromEnvVar_dosLoop

unRemoveFromEnvVar_dosLoopEnd:

FileClose $3

FileClose $2

StrCpy $2 $WINDIR 2

Delete "$"

CopyFiles /SILENT $5 "$"

Delete $5

Goto unRemoveFromEnvVar_done

unRemoveFromEnvVar_NT:

ReadRegStr $2 ${WriteEnvStr_RegKey} $0

StrCpy $6 $2 1 -1 # copy last char

StrCmp $6 ";" +2 # if last char != ;

StrCpy $2 "$2;" # append ;

Push $2

Push "$1;"

Call ; Find `$1;` in $2

Pop $3 ; pos of our dir

StrCmp $3 "" unRemoveFromEnvVar_done

; else, it is in path

# $1 - path to add

# $2 - path var

StrLen $4 "$1;"

StrLen $5 $3

StrCpy $6 $2 -$5 # $6 is now the part before the path to remove

StrCpy $7 $3 "" $4 # $7 is now the part after the path to remove

StrCpy $4 $6$7

StrCpy $6 $4 1 -1 # copy last char

StrCmp $6 ";" 0 +2 # if last char == ;

StrCpy $4 $4 -1 # remove last char

WriteRegExpandStr ${WriteEnvStr_RegKey} $0 $4

; delete reg value if null

StrCmp $4 "" 0 +2 # if null delete reg

DeleteRegValue ${WriteEnvStr_RegKey} $0

SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE}

unRemoveFromEnvVar_done:

Pop $7

Pop $6

Pop $5

Pop $4

0

"STR:Environment" /TIMEOUT=5000

Pop $3

Pop $2

Pop $1

Pop $0

FunctionEnd

!ifndef IsNT_KiCHiK

!define IsNT_KiCHiK

###########################################

# Utility Functions #

###########################################

; IsNT

; no input

; output, top of the stack = 1 if NT or 0 if not

;

; Usage:

; Call IsNT

; Pop $R0

; ($R0 at this point is 1 or 0)

!macro IsNT un

Function ${un}IsNT

Push $0

ReadRegStr $0 HKLM "SOFTWAREMicrosoftWindows

CurrentVersion

StrCmp $0 "" 0 IsNT_yes

; we are not NT.

Pop $0

Push 0

NTCurrentVersion"

Return

IsNT_yes:

; NT!!!

Pop $0

Push 1

FunctionEnd

!macroend

!insertmacro IsNT ""

!insertmacro IsNT "un."

!endif ; IsNT_KiCHiK

; StrStr

; input, top of stack = string to search for

; top of stack-1 = string to search in

; output, top of stack (replaces with the portion of the string remaining)

; modifies no other variables.

;

; Usage:

; Push "this is a long ass string"

; Push "ass"

; Call StrStr

; Pop $R0

; ($R0 at this point is "ass string")

!macro StrStr un

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 $R4 0

; $R1=needle

; $R2=haystack

; $R3=len(needle)

; $R4=cnt

; $R5=tmp

loop:

StrCpy $R5 $R2 $R3 $R4

StrCmp $R5 $R1 done

StrCmp $R5 "" done

IntOp $R4 $R4 + 1

Goto loop

done:

StrCpy $R1 $R2 "" $R4

Pop $R5

Pop $R4

Pop $R3

Pop $R2

Exch $R1

FunctionEnd

!macroend

!insertmacro StrStr ""

!insertmacro StrStr "un."

!endif ; _AddToPath_nsh

Function Trim ; Added by Pelaca

Exch $R1

Push $R2

Loop:

StrCpy $R2 "$R1" 1 -1

StrCmp "$R2" " " RTrim

StrCmp "$R2" "$n" RTrim

StrCmp "$R2" "$r" RTrim

StrCmp "$R2" ";" RTrim

GoTo Done

RTrim:

StrCpy $R1 "$R1" -1

Goto Loop

Done:

Pop $R2

Exch $R1

FunctionEnd

3、 脚本文件(复制到编辑器HM NIS Edit中保存)

!ifndef _WriteEnvStr_nsh

!define _WriteEnvStr_nsh

!include

!ifndef WriteEnvStr_RegKey

!ifdef ALL_USERS

!define WriteEnvStr_RegKey

'HKLM

ManagerEnvironment"'

"SYSTEMCurrentControlSetControlSession

!else

!define WriteEnvStr_RegKey 'HKCU "Environment"'

!endif

!endif

#

# WriteEnvStr - Writes an environment variable

# Note: Win9x systems requires reboot

#

# Example:

# Push "HOMEDIR" # name

# Push "C:New Home Dir" # value

# Call WriteEnvStr

#

Function WriteEnvStr

Exch $1 ; $1 has environment variable value

Exch

Exch $0 ; $0 has environment variable name

Push $2

Call IsNT

Pop $2

StrCmp $2 1 WriteEnvStr_NT

; Not on NT

StrCpy $2 $WINDIR 2 ; Copy drive of windows (c:)

FileOpen $2 "$" a

FileSeek $2 0 END

FileWrite $2 "$r$nSET $0=$1$r$n"

FileClose $2

SetRebootFlag true

Goto WriteEnvStr_done

WriteEnvStr_NT:

WriteRegExpandStr ${WriteEnvStr_RegKey} $0 $1

SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE}

0 "STR:Environment" /TIMEOUT=5000

WriteEnvStr_done:

Pop $2

Pop $0

Pop $1

FunctionEnd

#

# EnvStr - Removes an environment variable

# Note: Win9x systems requires reboot

#

# Example:

# Push "HOMEDIR" # name

# Call EnvStr

#

Function EnvStr

Exch $0 ; $0 now has the name of the variable

Push $1

Push $2

Push $3

Push $4

Push $5

Call

Pop $1

StrCmp $1 1 DeleteEnvStr_NT

; Not on NT

StrCpy $1 $WINDIR 2

FileOpen $1 "$" r

GetTempFileName $4

FileOpen $2 $4 w

StrCpy $0 "SET $0="

SetRebootFlag true

DeleteEnvStr_dosLoop:

FileRead $1 $3

StrLen $5 $0

StrCpy $5 $3 $5

StrCmp $5 $0 DeleteEnvStr_dosLoop

StrCmp $5 "" DeleteEnvStr_dosLoopEnd

FileWrite $2 $3

Goto DeleteEnvStr_dosLoop

DeleteEnvStr_dosLoopEnd:

FileClose $2

FileClose $1

StrCpy $1 $WINDIR 2

Delete "$"

CopyFiles /SILENT $4 "$"

Delete $4

Goto DeleteEnvStr_done

DeleteEnvStr_NT:

DeleteRegValue ${WriteEnvStr_RegKey} $0

SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE}

0 "STR:Environment" /TIMEOUT=5000

DeleteEnvStr_done:

Pop $5

Pop $4

Pop $3

Pop $2

Pop $1

Pop $0

FunctionEnd

!ifndef IsNT_KiCHiK

!define IsNT_KiCHiK

#

# [un.]IsNT - Pushes 1 if running on NT, 0 if not

#

# Example:

# Call IsNT

# Pop $0

# StrCmp $0 1 +3

# MessageBox MB_OK "Not running on NT!"

# Goto +2

# MessageBox MB_OK "Running on NT!"

#

!macro IsNT UN

Function ${UN}IsNT

Push $0

ReadRegStr $0 HKLM

"SOFTWAREMicrosoftWindows NTCurrentVersion" CurrentVersion

StrCmp $0 "" 0 IsNT_yes

; we are not NT.

Pop $0

Push 0

Return

IsNT_yes:

; NT!!!

Pop $0

Push 1

FunctionEnd

!macroend

!insertmacro IsNT ""

!insertmacro IsNT "un."

!endif ; IsNT_KiCHiK

!endif ; _WriteEnvStr_nsh

4、 脚本文件

(这个是主脚本,依赖于前两个脚本,复制到编辑器HM NIS Edit中,根据自己的具

体情况做相应修改)

; Script generated by the HM NIS Edit Script Wizard.

; HM NIS Edit Wizard helper defines

!define PRODUCT_NAME "AAA"

!define PRODUCT_VERSION "2.0"

!define PRODUCT_PUBLISHER "AAA科技股份有限公司"

!define PRODUCT_UNINST_KEY

"SoftwareMicrosoftWindowsCurrentVersionUninstall${PRODUCT_NAME}"

!define PRODUCT_UNINST_ROOT_KEY "HKLM"

!define PRODUCT_STARTMENU_REGVAL "NSIS:sTARTmENUdIR"

SetCompressor lzma

; MUI 1.67 compatible ------

!include ""

;Register Environmnet Variable

!include

!include

; MUI Settings

!define MUI_ABORTWARNING

!define MUI_ICON "${NSISDIR}"

!define

"${NSISDIR}"

MUI_UNICON

; Welcome page

!insertmacro MUI_PAGE_WELCOME

; 许可协议页面

!insertmacro MUI_PAGE_LICENSE ""

; Components page

!insertmacro MUI_PAGE_COMPONENTS

; Directory page

;!insertmacro MUI_PAGE_DIRECTORY

; Start menu page

var ICONS_GROUP

!define MUI_STARTMENUPAGE_NODISABLE

!define MUI_STARTMENUPAGE_DEFAULTFOLDER "AAA信息管理系统"

!define

"${PRODUCT_UNINST_ROOT_KEY}"

MUI_STARTMENUPAGE_REGISTRY_ROOT

!define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"

!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME

"${PRODUCT_STARTMENU_REGVAL}"

!insertmacro MUI_PAGE_STARTMENU Application $ICONS_GROUP

; Instfiles page

!insertmacro MUI_PAGE_INSTFILES

; Finish page

;!define MUI_FINISHPAGE_RUN "$"

!insertmacro MUI_PAGE_FINISH

; Uninstaller pages

!insertmacro MUI_UNPAGE_INSTFILES

; Language files

!insertmacro MUI_LANGUAGE "SimpChinese"

; Reserve files

!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS

;Section Description

;!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN

;!insertmacro MUI_DESCRIPTION_TEXT ${SEC01} "Tomcat6.0.35 JDK6u18,

MySql5.1.55 必选项"

; !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} "AAA信息管理系统运行环

境,[必选]"

; !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} "AAA信息管理系统网络服

务,[必选]"

; !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} "AAA信息管理系统数据

库,[必选]"

;!insertmacro MUI_FUNCTION_DESCRIPTION_END

; MUI end ------

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"

BRANDINGTEXT "AAA科技股份有限公司"

OutFile ""

;InstallDir "$PROGRAMFILESapplication"

InstallDir "D:aaa"

ShowInstDetails show

ShowUnInstDetails show

;define install type

InstType "完全"

;install type end------

;Define for Environment Variables

!define JAVA_HOME "$INSTDIRjdk1618"

!define CATALINA_HOME "$INSTDIRtomcat6"

!define MYSQL_HOME "$INSTDIRmysql5"

Section "JDK6u18" SEC02

sectionin 1

sectionin RO

SetOutPath "$INSTDIRjdk1618"

SetOverwrite try

File /r "D:webExejdk1618*.*"

SectionEnd

Section "Tomcat6" SEC03

sectionin 1

sectionin RO

SetOutPath "$INSTDIRtomcat6"

SetOverwrite try

File /r "D:webExetomcat6*.*"

SectionEnd

Section "MySQL5" SEC04

sectionin 1

sectionin RO

SetOutPath "$INSTDIRmysql5"

SetOverwrite try

File /r "D:webExemysql5*.*"

SectionEnd

Section -EnvironmentVariables

;WriteRegExpandStr HKLM "SYSTEMCurrentControlSetControlSession

ManagerEnvironment" "JAVA_HOME" "${JAVA_HOME}"

Push JAVA_HOME

Push '${JAVA_HOME}'

Call WriteEnvStr

Push '${JAVA_HOME}bin'

Call AddToPath

;Set CATALINA_HOME Environment Variable

Push CATALINA_HOME

Push '${CATALINA_HOME}'

Call WriteEnvStr

Push '${CATALINA_HOME}bin'

Call AddToPath

;Set MYSQL_HOME Environment Variable

Push MYSQL_HOME

Push '${MYSQL_HOME}'

Call WriteEnvStr

Push '${MYSQL_HOME}bin'

Call AddToPath

SectionEnd

;Application StartMenu Directory

Section -AdditionalIcons

SetOutPath $INSTDIR

!insertmacro MUI_STARTMENU_WRITE_BEGIN Application

CreateDirectory "$SMPROGRAMS$ICONS_GROUP"

CreateShortCut

"localhost:8080/"

"$SMPROGRAMS$ICONS_"

CreateShortCut

"$"

"$SMPROGRAMS$ICONS_"

!insertmacro MUI_STARTMENU_WRITE_END

SectionEnd

;

Section -Post

WriteUninstaller "$"

WriteRegStr ${PRODUCT_UNINST_ROOT_KEY}

WriteRegStr ${PRODUCT_UNINST_ROOT_KEY}

WriteRegStr ${PRODUCT_UNINST_ROOT_KEY}

WriteRegStr ${PRODUCT_UNINST_ROOT_KEY}

SectionEnd

Section -Service

"${PRODUCT_UNINST_KEY}"

"DisplayName" "$(^Name)"

"${PRODUCT_UNINST_KEY}"

"UninstallString" "$"

"${PRODUCT_UNINST_KEY}"

"DisplayVersion" "${PRODUCT_VERSION}"

"${PRODUCT_UNINST_KEY}"

"Publisher" "${PRODUCT_PUBLISHER}"

Call InstallTomcatService

Call InstallMySQLService

Call StartService

SectionEnd

;Install Mysql Service

Function InstallMySQLService

ExecWait "$INSTDIRmysql5binmysqld

--defaults-file=$"

FunctionEnd

Function InstallTomcatService

SetOutPath "$INSTDIRtomcat6bin"

ExecWait " install"

ExecWait "sc config tomcat6 start= auto"

FunctionEnd

mysql5 --install

Function StartService

ExecWait "net start mysql5"

ExecWait "net start tomcat6"

FunctionEnd

;Stop MySQL Service

Function rvice

ExecWait "net stop tomcat6"

ExecWait "net stop mysql5"

functionend

;Delete MySQL Service

function Service

ExecWait "$INSTDIRmysql5binmysqld -remove"

functionend

function TomcatService

SetOutPath "$INSTDIRtomcat6bin"

ExecWait " remove"

functionend

Function stSuccess

HideWindow

MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从你的计算

机移除。"

FunctionEnd

Function

MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "你确实要完

全移除 $(^Name) ,其及所有的组件?" IDYES +2

Abort

;call FileType

FunctionEnd

Function EnvPath

Push CATALINA_HOME

Call EnvStr

Push ${CATALINA_HOME}bin

Call FromPath

Push MYSQL_HOME

Call EnvStr

Push ${MYSQL_HOME}bin

Call FromPath

Push JAVA_HOME

Call EnvStr

Push ${JAVA_HOME}bin

Call FromPath

FunctionEnd

Section Uninstall

Call rvice

Call TomcatService

Call Service

!insertmacro MUI_STARTMENU_GETFOLDER "Application" $ICONS_GROUP

Delete "$INSTDIR${PRODUCT_NAME}.url"

Delete "$"

Delete "$SMPROGRAMS$ICONS_"

Delete "$SMPROGRAMS$ICONS_"

Delete "$"

RMDir "$SMPROGRAMS$ICONS_GROUP"

RMDir /r "$INSTDIRjdk1618"

RMDir /r "$INSTDIRmysql5"

RMDir /r "$INSTDIRtomcat6"

RMDir /r "$INSTDIR"

DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"

DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"

Call EnvPath

SetAutoClose true

SectionEnd

5、 安装许可协议 (复制保存为)

AAA科技软件授权许可协议

AAA科技股份有限公司(以下简称AAA科技)独立开发软件, AAA科技依法享有

该软件之版权和著作权:

AAA科技软件以商业收费方式提供,许可授权用户使用,但该软件的授权使用

者(含个人、法人或其它组织)必须遵守以下许可协议:

1、 AAA科技将 AAA科技软件授权提供给授权用户,同时提供相关的安装说明、使

用说明等文档。授权用户依法享有该软件的使用权,依法享有 AAA科技在所承诺的服务

期限内提供的安装、升级和技术支持服务。

2、除被授权方外的任何第三方无权使用该许可软件或其中任何一部分。任何人无权将

该许可软件或其中任何一部分向他人出售、出租、转让权利或者以其他形式进行转让或提

供利用。 任何人不得对本软件进行反向工程、反编译或者反汇编工作。

对违反此授权协议行为的个人、法人或其它组织,必须立即停止其行为造成的一切不

良后果承担全部责任。对此前,尤其是此后的行为,将依据《著作权法》、《计算机软件保

护条例》等相关法律、法规追究其经济和法律责任。

AAA科技保留对此协议的最终解释权,任何用户使用本软件则表示默认接受此协议。

AAA科技股份有限公司

二零一二年十一月

6、 脚本存放位置

、脚本要拷贝到NSIS(注意,不是HM NIS Editor)安

装目录中的Include子目录中,否则将通不过编译。

、放在打包文件目录D:webExe中

六、 开始打包

通过NSIS对脚本文件进行编译就开始打包了。

(右键选择Compile NSIS Script即可)

打包速度与web应用系统大小和数据库数据多少有关,本人大概花了15分钟左右。


发布者:admin,转转请注明出处:http://www.yc00.com/web/1712897676a2143944.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信