NSIS制作B/S应用的安装程序java

SetCompressor zlib

# Defines
!define REGKEY "SOFTWARE$(^Name)"
!define VERSION 1.0
!define COMPANY 超能公司
!define URL www.XXXX.com

# MUI defines
#!define MUI_ICON logo.ico
#!define MUI_UNICON logo.ico
!define MUI_FINISHPAGE_NOAUTOCLOSE
#定义readme
!define MUI_FINISHPAGE_SHOWREADME $INSTDIRreadme.txt
!define MUI_FINISHPAGE_RUN "$PROGRAMFILESInternet ExplorerIEXPLORE.EXE"
!define MUI_FINISHPAGE_RUN_PARAMETERS 登录主页的url

!define MUI_CUSTOMFUNCTION_GUIINIT CustomGUIInit
!define MUI_UNFINISHPAGE_NOAUTOCLOSE

# Included files
!include Sections.nsh
!include MUI.nsh
!include "LogicLib.nsh"
!include "${NSISDIR}ExamplesSystemSystem.nsh"
!include WinMessages.nsh
# Reserved Files
ReserveFile "${NSISDIR}PluginsBGImage.dll"
ReserveFile "${NSISDIR}PluginsAdvSplash.dll"

# Variables
Var StartMenuGroup

# Installer pages
!insertmacro MUI_PAGE_WELCOME
#!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES

# Installer languages
!insertmacro MUI_LANGUAGE SimpChinese

Caption "超能MIS"

Icon "imginstall.ico"
BrandingText " 超能有限公司 -- www.超能.com "
# Installer attributes
OutFile 超能.Exe
InstallDir $PROGRAMFILES超能

!define MUI_HEADERIMAGE
CRCCheck on
XPStyle on
ShowInstDetails show
#nevershow
VIProductVersion 1.0.0.0
VIAddVersionKey /LANG=${LANG_SIMPCHINESE} ProductName 超能system
VIAddVersionKey ProductVersion "${VERSION}"
VIAddVersionKey /LANG=${LANG_SIMPCHINESE} CompanyName "${COMPANY}"
VIAddVersionKey /LANG=${LANG_SIMPCHINESE} CompanyWebsite "${URL}"
VIAddVersionKey /LANG=${LANG_SIMPCHINESE} FileVersion ""
VIAddVersionKey /LANG=${LANG_SIMPCHINESE} FileDescription ""
VIAddVersionKey /LANG=${LANG_SIMPCHINESE} LegalCopyright ""
InstallDirRegKey HKLM "${REGKEY}" Path
ShowUninstDetails hide

UninstallText "将要卸载 超能system .点击继续."
UninstallIcon "imguninstall.ico"
var DBPATH
# Installer SQL Server 2000 sections
Section SqlServer SEC0000
 #MessageBox MB_OK $EXEDIR
 #调用第一个信息
 IntOp $9 0 + 1
 call showBg

 StrCpy $DBPATH $INSTDIR
 ;ReadRegStr $0 HKLM "SoftwareMicrosoftMSSQLServerSetup" "SQLPath"
 ReadRegStr $0 HKLM "SoftwareMicrosoftMicrosoft SQL ServerXXXXSetup" "SQLPath"
 StrCmp $0 "" 0 +9
 DetailPrint "正在安装SQL Server 2000 桌面引擎,请等约两分钟。 "
 ExecWait '"$EXEDIRDisk1MSDERelAsetup.exe" DISABLENETWORKPROTOCOLS=0 SAPWD="XXXXXX"

SECURITYMODE=SQL INSTANCENAME="XXXX" DATADIR="$INSTDIR" TARGETDIR="$INSTDIR"'
 DetailPrint "SQL Server 2000 桌面引擎安装完成!"
 IfFileExists $DBPATHMSSQL$XXXXDataXXXXX.mdf 0 +2
 Delete /REBOOTOK $DBPATHMSSQL$XXXXXDataXXXXX.mdf
 IfFileExists $DBPATHMSSQL$XXXXXDataXXXXX_log.LDF 0 +2
 Delete /REBOOTOK $DBPATHMSSQL$XXXXXDataXXXXX_log.LDF
 goto +2
 StrCpy $DBPATH $0
 IntOp $9 0 + 2
 call showBg
 ExecWait '"net.exe" start MSSQL$XXXXX'
 ExecWait '"osql.exe" -U sa -P XXXXXX -S .XXXXX -Q "Create Database XXXXX"'
 DetailPrint "正在恢复演示数据!请耐心等待。"
 ExecWait '"osql.exe" -U sa -P styx2008 -S .XXXXX -Q "restore database XXXX from

disk=
$EXEDIRDisk1XXXX
 with move 
XXXX_Data
 to


$DBPATHMSSQL$XXXXDataXXXX.mdf
, move 
XXXX_Log
 to


$DBPATHMSSQL$XXXXDataXXXX_log.LDF
"'
 DetailPrint "演示数据恢复完成!"
 IntOp $9 0 + 3
 call showBg

SectionEnd

# Installer jdk1.5.0_06 sections
Section -JDK5 SEC0001
 SetOutPath $INSTDIR
 File readme.txt
 File imginstall.ico

 DetailPrint "正在安装Java虚拟机!"
 SetOutPath "$INSTDIRjdk1.5.0_06"
 SetOverwrite on
 File /r "C:Program FilesJavajdk1.5.0_06*"
 push $9
 IntOp $9 0 + 4
 call showBg
 pop $9
 ;SetOutPath $INSTDIR
 SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=0
 WriteRegExpandStr HKLM "SYSTEMCurrentControlSetControlSession ManagerEnvironment"

"JAVA_HOME" "$INSTDIRjdk1.5.0_06"
 WriteRegExpandStr HKLM "SYSTEMCurrentControlSetControlSession ManagerEnvironment"

"TOMCAT_HOME" "$PROGRAMFILESTomcat 5.0"

 SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=0
 WriteRegStr HKLM "${REGKEY}Components" JDK5 1

 DetailPrint "Java虚拟机安装完成!"
 push $9
 IntOp $9 0 + 5
 call showBg
 pop $9

SectionEnd
# Installer Tomcat 5.0 sections
Section -Server SEC0002
 IntOp $9 0 + 6
 call showBg
 DetailPrint "正在安装WEB服务器!"
 SetOutPath "$PROGRAMFILESTomcat 5.0"
 SetOverwrite on
 File /r "D:Tomcat 5.0*"
 push $9
 IntOp $9 0 + 7
 call showBg
 pop $9
 ;ReadRegStr $0 HKLM "SYSTEMCurrentControlSetControlSession ManagerEnvironment"

"TOMCAT_HOME"
 ;WriteRegExpandStr HKLM "SYSTEMCurrentControlSetControlSession ManagerEnvironment"

"TOMCAT_HOME" "$PROGRAMFILESTomcat 5.0"
 SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment"
#在windows服务中加入”启动服务“项
 ExecWait '"$PROGRAMFILESTomcat 5.0binNetInstall.bat" "$PROGRAMFILESTomcat 5.0bin"

"$INSTDIRjdk1.5.0_06"'
 #ExecWait '"$PROGRAMFILESTomcat 5.0bintomcat5.exe" //IS//XXXX --DisplayName="XXXX"

--Install="$PROGRAMFILESTomcat 5.0bintomcat5.exe" --Jvm=auto --StartMode=jvm --

StopMode=jvm --StartClass=org.apache.catalina.startup.Bootstrap --StartParams=start --

StopClass=org.apache.catalina.startup.Bootstrap --StopParams=stop'
 #ExecWait '"$PROGRAMFILESTomcat 5.0bintomcat5.exe" //IS//XXXX --DisplayName="XXXX"

--Install="$PROGRAMFILESTomcat 5.0bintomcat5.exe" --Jvm="$INSTDIRjdk1.5.0_06

jrebinserverjvm.dll" --StartMode=jvm --StopMode=jvm --

StartClass=org.apache.catalina.startup.Bootstrap --StartParams=start --

StopClass=org.apache.catalina.startup.Bootstrap --StopParams=stop'
 ExecWait '"$PROGRAMFILESTomcat 5.0bintomcat5.exe" //US//XXXX --Description="XXXX" -

-Startup=auto'
 DetailPrint "WEB服务器安装完成!"
 DetailPrint "WEB服务器开始启动!"
 push $9
 IntOp $9 0 + 8
 call showBg
 pop $9
启动tomcat
 ExecWait '"net" start XXXX'
 push $9
 IntOp $9 0 + 9
 call showBg
 pop $9
 DetailPrint "WEB服务器启动完成!"
 WriteRegStr HKLM "${REGKEY}Components" Server 1
 push $9
 IntOp $9 0 + 10
 call showBg
 pop $9

 push $1
 push $0
#读取当前数据库实例的端口,并且写入应用的配置文件
 ReadRegStr $1 HKLM "SoftwareMicrosoftMicrosoft SQL

ServerXXXXMSSQLServerSuperSocketNetLibTcp" "TcpPort"
 StrCmp $1 "" done 0
 ;IfFileExists $PROGRAMFILESTomcat 5.0webappsXXXXWEB-INFNode.driver.xml 0 +2
 FileOpen $0 '$PROGRAMFILESTomcat 5.0webappsXXXXWEB-INFNode.driver.xml' w
 FileWrite $0 '<?xml version="1.0" encoding="utf-8"?>$r$n'
 FileWrite $0 '<driver project-version="1.0"

class="com.microsoft.jdbc.sqlserver.SQLServerDriver">$r$n'
 FileWrite $0 '<url

value="jdbc:microsoft:sqlserver://127.0.0.1:$1;DatabaseName=XXXX"/>$r$n'
 FileWrite $0 '<connectionPool min="1" max="100" />$r$n'
 FileWrite $0 '<login userName="sa" password="XXXX"/>$r$n'
 FileWrite $0 '</driver>'
 FileClose $0
 done:

 pop $1
 pop $0
 ; CopyFiles $INSTDIR*.dat $INSTDIRbackup

SectionEnd

# Installer Shortcut sections
Section -Shortcut SEC0003
 SetOutPath $SMPROGRAMS$StartMenuGroup
 CreateShortcut $SMPROGRAMS$StartMenuGroupbin.lnk "$PROGRAMFILESTomcat 5.0bin"
 CreateShortcut $SMPROGRAMS$StartMenuGroup超能系统.lnk "$PROGRAMFILESInternet

ExplorerIEXPLORE.EXE " "http://127.0.0.1:8080/XXXX/login.jsp"
 CreateShortcut $SMPROGRAMS$StartMenuGroupReadMe.lnk "notepad.exe "

"$INSTDIRreadme.txt"
 WriteRegStr HKLM "${REGKEY}Components" Shortcut 1
 IntOp $9 0 + 11
 call showBg
SectionEnd

Section -post SEC0004
 WriteRegStr HKLM "${REGKEY}" Path $INSTDIR
 SetOutPath $INSTDIR
 WriteUninstaller $INSTDIRuninstall.exe
 SetOutPath $SMPROGRAMS$StartMenuGroup
 CreateShortcut "$SMPROGRAMS$StartMenuGroup$(^UninstallLink).lnk"

$INSTDIRuninstall.exe
 WriteRegStr HKLM "SOFTWAREMicrosoftWindowsCurrentVersionUninstall$(^Name)"

DisplayName "$(^Name)"
 WriteRegStr HKLM "SOFTWAREMicrosoftWindowsCurrentVersionUninstall$(^Name)"

DisplayVersion "${VERSION}"
 WriteRegStr HKLM "SOFTWAREMicrosoftWindowsCurrentVersionUninstall$(^Name)"

Publisher "${COMPANY}"
 WriteRegStr HKLM "SOFTWAREMicrosoftWindowsCurrentVersionUninstall$(^Name)"

URLInfoAbout "${URL}"
 WriteRegStr HKLM "SOFTWAREMicrosoftWindowsCurrentVersionUninstall$(^Name)"

DisplayIcon $INSTDIRlogo.ico
 WriteRegStr HKLM "SOFTWAREMicrosoftWindowsCurrentVersionUninstall$(^Name)"

UninstallString $INSTDIRuninstall.exe
 WriteRegDWORD HKLM "SOFTWAREMicrosoftWindowsCurrentVersionUninstall$(^Name)"

NoModify 1
 WriteRegDWORD HKLM "SOFTWAREMicrosoftWindowsCurrentVersionUninstall$(^Name)"

NoRepair 1
 IntOp $9 0 + 12
 call showBg
SectionEnd

# Macro for selecting uninstaller sections
!macro SELECT_UNSECTION SECTION_NAME UNSECTION_ID
 Push $R0
 ReadRegStr $R0 HKLM "${REGKEY}Components" "${SECTION_NAME}"
 StrCmp $R0 1 0 next${UNSECTION_ID}
 !insertmacro SelectSection "${UNSECTION_ID}"
 GoTo done${UNSECTION_ID}
next${UNSECTION_ID}:
 !insertmacro UnselectSection "${UNSECTION_ID}"
done${UNSECTION_ID}:
 Pop $R0
!macroend
# Uninstaller sections
Section /o un.Server UNSEC0000
 ExecWait '"cd" /d $PROGRAMFILESTomcat 5.0bin'
 ExecWait '"net" stop XXXX'
 ExecWait '"$PROGRAMFILESTomcat 5.0binNetRemove.bat" "$PROGRAMFILESTomcat 5.0bin"'
 Delete /REBOOTOK $INSTDIRreadme.txt
 Delete /REBOOTOK $INSTDIRinstall.ico
 RmDir /r /REBOOTOK "$PROGRAMFILESTomcat 5.0"
 DeleteRegValue HKLM "${REGKEY}Components" Server
SectionEnd

Section /o un.Shortcut UNSEC0001
 Delete /REBOOTOK $SMPROGRAMS$StartMenuGroupbin.lnk
 Delete /REBOOTOK $SMPROGRAMS$StartMenuGroup超能系统登录.lnk
 Delete /REBOOTOK $SMPROGRAMS$StartMenuGroupReadMe.lnk
 RmDir /r /REBOOTOK "$SMPROGRAMS$StartMenuGroup"
 DeleteRegValue HKLM "${REGKEY}Components" Shortcut
SectionEnd

Section /o un.JDK5 UNSEC0002
 RmDir /r /REBOOTOK "$INSTDIRjdk1.5.0_06"
 DeleteRegValue HKLM "SYSTEMCurrentControlSetControlSession ManagerEnvironment"

"JAVA_HOME"
 DeleteRegValue HKLM "SYSTEMCurrentControlSetControlSession ManagerEnvironment"

"TOMCAT_HOME"
 SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=0
 DeleteRegValue HKLM "${REGKEY}Components" JDK5
SectionEnd

Section un.post UNSEC0003
 DeleteRegKey HKLM "SOFTWAREMicrosoftWindowsCurrentVersionUninstall$(^Name)"
 Delete /REBOOTOK "$SMPROGRAMS$StartMenuGroup$(^UninstallLink).lnk"
 Delete /REBOOTOK $INSTDIRuninstall.exe
 DeleteRegValue HKLM "${REGKEY}" Path
 DeleteRegKey /IfEmpty HKLM "${REGKEY}Components"
 DeleteRegKey /IfEmpty HKLM "${REGKEY}"
 RmDir /REBOOTOK $SMPROGRAMS$StartMenuGroup
 RmDir /REBOOTOK $INSTDIR
SectionEnd

# Installer functions
Function CustomGUIInit
 CreateFont $R1 "华文中宋" 15 500 #/NORMAL
 IntOp $9 0 + 0
 call showBg
 CALL repositionWindow
 ;System::Call "User32::SetWindowPos(i, i, i, i, i, i, i) b ($HWNDPARENT, -1, 0, 0, 0, 0,

${SWP_NOOWNERZORDER}|${SWP_NOSIZE})"

FunctionEnd

Function .onGUIEnd
 BGImage::Destroy

FunctionEnd

Function .onInit
 InitPluginsDir
 StrCpy $StartMenuGroup "超能系统"
 Push $R1

 File /oname=$PLUGINSDIRbg.bmp "imgbg.bmp"
 File /oname=$PLUGINSDIRspltmp.bmp imgMainSplash.bmp
 advsplash::show 1000 600 400 -1 $PLUGINSDIRspltmp
 Pop $R1
 Pop $R1
FunctionEnd

# Uninstaller functions
Function un.onInit

 ReadRegStr $INSTDIR HKLM "${REGKEY}" Path
 StrCpy $StartMenuGroup "超能系统"
 !insertmacro SELECT_UNSECTION Server ${UNSEC0000}
 !insertmacro SELECT_UNSECTION Shortcut ${UNSEC0001}
 !insertmacro SELECT_UNSECTION JDK5 ${UNSEC0002}

FunctionEnd
Function repositionWindow
 ;Save existing register values to the stack
 Push $0
 Push $1
 Push $2
 Push $3
 Push $4
 Push $5
 Push $6
 Push $7
 Push $8
; !define SPI_GETWORKAREA 0x0030
; !define SWP_NOSIZE 0x0001
; !define SWP_NOOWNERZORDER 0x0200
 ; Reposition window in the lower left
 ; Create RECT struct
 System::Call "*${stRECT} .r1"
 ; Find Window info for the window we're displaying
 System::Call "User32::GetWindowRect(i, i) i ($HWNDPARENT, r1) .r2"
 ; Get left/top/right/bottom
 System::Call "*$1${stRECT} (.r2, .r3, .r4, .r5)"

 ; Calculate width/height of our window
 IntOp $2 $4 - $2 ; $2 now contains the width
 IntOp $3 $5 - $3 ; $3 now contains the height

 ; Determine the screen work area
 System::Call "User32::SystemParametersInfo(i, i, i, i) i (${SPI_GETWORKAREA}, 0, r1, 0)

.r4"
 ; Get left/top/right/bottom
 System::Call "*$1${stRECT} (.r4, .r5, .r6, .r7)"

 System::Free $1

 ; Right side of screen - window - 10
 IntOp $0 $6 - $2
 IntOp $0 $0 / 2
 ; Left side of screen + 10
 ;IntOp $0 $4 + 10

 ; Bottom of screen - window - 5
 IntOp $1 $7 - $3
 IntOp $1 $1 / 2
 IntOp $8 $7 / 10
 IntOp $1 $1 + $8

 System::Call "User32::SetWindowPos(i, i, i, i, i, i, i) b ($HWNDPARENT, -1, $0, $1, 0,

0, ${SWP_NOOWNERZORDER}|${SWP_NOSIZE})"

 ;Restore register values from the stack
 Pop $8
 Pop $7
 Pop $6
 Pop $5
 Pop $4
 Pop $3
 Pop $2
 Pop $1
 Pop $0
FunctionEnd
Function showBg
 BgImage::Clear /NOUNLOAD
 BgImage::SetBg /NOUNLOAD /FILLSCREEN $PLUGINSDIRbg.bmp
 ${Switch} $9
 ${Case} 0
 BGImage::AddText /NOUNLOAD "  信息1。" $R1 0 0 0 40 130 990 230
 ${Break}
 ${Case} 1
 ;BGImage::AddImage /NOUNLOAD 38 130 $EXEDIRimg1.bmp
 BGImage::AddText /NOUNLOAD "  信息2 " $R1 0 0 0 40 130 990 230
 ${Break}
 ${Case} 2
 BGImage::AddText /NOUNLOAD "信息3" $R1 0 0 0 200 130 990 230
 ${Break}
 ${Case} 3
 BGImage::AddText /NOUNLOAD "信息4" $R1 0 0 0 220 150 990 230
 ${Break}
 ${Case} 4
 BGImage::AddText /NOUNLOAD "   信息5" $R1 0 0 0 180 130 850 230
 ${Break}
 ${Case} 5
 BGImage::AddText /NOUNLOAD "  信息6" $R1 0 0 0 120 130 880 230
 ${Break}
 ${Case} 6
 BGImage::AddText /NOUNLOAD "“信息7" $R1 0 0 0 330 170 990 230
 ${Break}
 ${Case} 7
 BGImage::AddText /NOUNLOAD "信息8" $R1 0 0 0 400 170 990 230
 ${Break}
 ${Case} 8
 BGImage::AddText /NOUNLOAD "信息9" $R1 0 0 0 300 150 990 230
 ${Break}
 ${Case} 9
 BGImage::AddText /NOUNLOAD "信息10" $R1 0 0 0 400 170 990 230
 ${Break}

 ${EndSwitch}
 BGImage::Redraw /NOUNLOAD
FunctionEnd

/*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 "$2autoexec.bat" 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*/

# Installer Language Strings
# TODO Update the Language Strings with the appropriate translations.

LangString ^UninstallLink ${LANG_SIMPCHINESE} "Uninstall $(^Name)"
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容