432 lines
10 KiB
Text
432 lines
10 KiB
Text
!define PRODUCT_NAME "PRODUCTNAMEPLACEHOLDER"
|
|
!define PRODUCT_VERSION "PRODUCTVERSIONPLACEHOLDER"
|
|
!define PRODUCT_PUBLISHER "PUBLISHERPLACEHOLDER"
|
|
!define PRODUCT_WEB_SITE "WEBSITEPLACEHOLDER"
|
|
|
|
SetCompressor lzma
|
|
; SetCompressor zlib
|
|
|
|
; MUI 1.67 compatible ------
|
|
!include "MUI.nsh"
|
|
|
|
Function .onInit
|
|
|
|
Call GetParameters
|
|
Pop $1
|
|
;MessageBox MB_OK "$1"
|
|
|
|
Push $1
|
|
Push "/HELP="
|
|
Call GetOptions
|
|
Pop $2
|
|
;MessageBox MB_OK "HELP: $2"
|
|
|
|
StrCmp $2 "ON" showhelp nohelp
|
|
showhelp:
|
|
MessageBox MB_OK|MB_ICONINFORMATION \
|
|
"DOWNLOADNAMEPLACEHOLDER options: $\n $\n \
|
|
/S : Silent installation $\n \
|
|
/D=<path> : NSIS installation directory (must be the last option!) $\n \
|
|
/EXTRACTONLY=ON : NSIS only extracts the PRODUCTNAMEPLACEHOLDER PRODUCTVERSIONPLACEHOLDER installation set $\n \
|
|
/INSTALLLOCATION=<path> : PRODUCTNAMEPLACEHOLDER PRODUCTVERSIONPLACEHOLDER installation directory $\n \
|
|
/POSTREMOVE=ON : Removes the unpacked installation set after PRODUCTNAMEPLACEHOLDER PRODUCTVERSIONPLACEHOLDER installation $\n \
|
|
/INSTALLJAVA=ON : Installs JRE located in sub directory java, if exists $\n \
|
|
/GUILEVEL=<guilevel> : Setting Windows Installer GUI level: qr, qb, qn, qf, ... $\n \
|
|
/PARAM1=$\"key=value$\" : Flexible parameter 1. Example: /PARAM1=$\"INSTALLLEVEL=70$\" $\n \
|
|
/PARAM2=$\"key=value$\" : Flexible parameter 2. $\n \
|
|
/PARAM3=$\"key=value$\" : Flexible parameter 3. $\n \
|
|
/HELP=ON : Shows this help $\n"
|
|
Quit
|
|
GoTo onInitDone
|
|
|
|
nohelp:
|
|
|
|
StrCmp $INSTDIR "" pathnotset pathset
|
|
pathnotset:
|
|
|
|
IfSilent onInitSilent onInitNoSilent
|
|
|
|
onInitSilent:
|
|
StrCpy $INSTDIR "$TEMP\PRODUCTPATHPLACEHOLDER Installation Files"
|
|
GoTo onInitDone
|
|
|
|
onInitNoSilent:
|
|
StrCpy $INSTDIR "$DESKTOP\PRODUCTPATHPLACEHOLDER Installation Files"
|
|
GoTo onInitDone
|
|
|
|
onInitDone:
|
|
pathset:
|
|
|
|
FunctionEnd
|
|
|
|
Function GetParameters
|
|
|
|
Push $R0
|
|
Push $R1
|
|
Push $R2
|
|
Push $R3
|
|
|
|
StrCpy $R2 1
|
|
|
|
StrLen $R3 $CMDLINE
|
|
|
|
;Check for quote or space
|
|
StrCpy $R0 $CMDLINE $R2
|
|
|
|
StrCmp $R0 '"' 0 +3
|
|
StrCpy $R1 '"'
|
|
Goto loop
|
|
StrCpy $R1 " "
|
|
|
|
loop:
|
|
IntOp $R2 $R2 + 1
|
|
StrCpy $R0 $CMDLINE 1 $R2
|
|
StrCmp $R0 $R1 get
|
|
StrCmp $R2 $R3 get
|
|
Goto loop
|
|
|
|
get:
|
|
IntOp $R2 $R2 + 1
|
|
StrCpy $R0 $CMDLINE 1 $R2
|
|
StrCmp $R0 " " get
|
|
StrCpy $R0 $CMDLINE "" $R2
|
|
|
|
Pop $R3
|
|
Pop $R2
|
|
Pop $R1
|
|
Exch $R0
|
|
|
|
FunctionEnd
|
|
|
|
Function GetOptions
|
|
|
|
Exch $1
|
|
Exch
|
|
Exch $0
|
|
Exch
|
|
Push $2
|
|
Push $3
|
|
Push $4
|
|
Push $5
|
|
Push $6
|
|
Push $7
|
|
|
|
StrCpy $2 $1 '' 1
|
|
StrCpy $1 $1 1
|
|
StrLen $3 $2
|
|
StrCpy $7 0
|
|
|
|
begin:
|
|
StrCpy $4 -1
|
|
StrCpy $6 ''
|
|
|
|
quote:
|
|
IntOp $4 $4 + 1
|
|
StrCpy $5 $0 1 $4
|
|
StrCmp $5$7 '0' notfound
|
|
StrCmp $5 '' trimright
|
|
StrCmp $5 '"' 0 +7
|
|
StrCmp $6 '' 0 +3
|
|
StrCpy $6 '"'
|
|
goto quote
|
|
StrCmp $6 '"' 0 +3
|
|
StrCpy $6 ''
|
|
goto quote
|
|
StrCmp $5 `'` 0 +7
|
|
StrCmp $6 `` 0 +3
|
|
StrCpy $6 `'`
|
|
goto quote
|
|
StrCmp $6 `'` 0 +3
|
|
StrCpy $6 ``
|
|
goto quote
|
|
StrCmp $5 '`' 0 +7
|
|
StrCmp $6 '' 0 +3
|
|
StrCpy $6 '`'
|
|
goto quote
|
|
StrCmp $6 '`' 0 +3
|
|
StrCpy $6 ''
|
|
goto quote
|
|
StrCmp $6 '"' quote
|
|
StrCmp $6 `'` quote
|
|
StrCmp $6 '`' quote
|
|
StrCmp $5 $1 0 quote
|
|
StrCmp $7 0 trimleft trimright
|
|
|
|
trimleft:
|
|
IntOp $4 $4 + 1
|
|
StrCpy $5 $0 $3 $4
|
|
StrCmp $5 '' notfound
|
|
StrCmp $5 $2 0 quote
|
|
IntOp $4 $4 + $3
|
|
StrCpy $0 $0 '' $4
|
|
StrCpy $4 $0 1
|
|
StrCmp $4 ' ' 0 +3
|
|
StrCpy $0 $0 '' 1
|
|
goto -3
|
|
StrCpy $7 1
|
|
goto begin
|
|
|
|
trimright:
|
|
StrCpy $0 $0 $4
|
|
StrCpy $4 $0 1 -1
|
|
StrCmp $4 ' ' 0 +3
|
|
StrCpy $0 $0 -1
|
|
goto -3
|
|
StrCpy $3 $0 1
|
|
StrCpy $4 $0 1 -1
|
|
StrCmp $3 $4 0 end
|
|
StrCmp $3 '"' +3
|
|
StrCmp $3 `'` +2
|
|
StrCmp $3 '`' 0 end
|
|
StrCpy $0 $0 -1 1
|
|
goto end
|
|
|
|
notfound:
|
|
StrCpy $0 ''
|
|
|
|
end:
|
|
Pop $7
|
|
Pop $6
|
|
Pop $5
|
|
Pop $4
|
|
Pop $3
|
|
Pop $2
|
|
Pop $1
|
|
Exch $0
|
|
|
|
FunctionEnd
|
|
|
|
; MUI Settings
|
|
!define MUI_HEADERIMAGE
|
|
!define MUI_HEADERIMAGE_RIGHT
|
|
!define MUI_HEADERIMAGE_BITMAP_NOSTRETCH
|
|
!define MUI_HEADERIMAGE_BITMAP BANNERBMPPLACEHOLDER
|
|
!define MUI_WELCOMEFINISHPAGE_BITMAP WELCOMEBMPPLACEHOLDER
|
|
!define MUI_WELCOMEFINISHPAGE_BITMAP_NOSTRETCH
|
|
!define MUI_WELCOMEPAGE_TITLE_3LINES
|
|
!define MUI_ABORTWARNING
|
|
!define MUI_ICON "SETUPICOPLACEHOLDER"
|
|
|
|
; Welcome page
|
|
!insertmacro MUI_PAGE_WELCOME
|
|
!insertmacro MUI_PAGE_DIRECTORY
|
|
!insertmacro MUI_PAGE_INSTFILES
|
|
|
|
#231#!macro MUI_LANGUAGE_PACK LANGUAGE
|
|
#231# !verbose push
|
|
#231# !verbose ${MUI_VERBOSE}
|
|
#231# !insertmacro MUI_INSERT
|
|
#231# LoadLanguageFile "NSISPATHPLACEHOLDER\${LANGUAGE}_pack.nlf"
|
|
#231# ;Set default language file for MUI and backup user setting
|
|
#231# !ifdef LANGFILE_DEFAULT
|
|
#231# !define MUI_LANGFILE_DEFAULT_TEMP "${LANGFILE_DEFAULT}"
|
|
#231# !undef LANGFILE_DEFAULT
|
|
#231# !endif
|
|
#231# !define LANGFILE_DEFAULT "${NSISDIR}\Contrib\Language files\English.nsh"
|
|
#231# ;Include language file
|
|
#231# !insertmacro LANGFILE_INCLUDE "NSISPATHPLACEHOLDER\${LANGUAGE}_pack.nsh"
|
|
#231# ;Restore user setting for default language file
|
|
#231# !undef LANGFILE_DEFAULT
|
|
#231# !ifdef MUI_LANGFILE_DEFAULT_TEMP
|
|
#231# !define LANGFILE_DEFAULT "${MUI_LANGFILE_DEFAULT}"
|
|
#231# !endif
|
|
#231# ;Add language to list of languages for selection dialog
|
|
#231# !ifndef MUI_LANGDLL_LANGUAGES
|
|
#231# !define MUI_LANGDLL_LANGUAGES "'${LANGFILE_${LANGUAGE}_NAME}' '${LANG_${LANGUAGE}}' "
|
|
#231# !define MUI_LANGDLL_LANGUAGES_CP "'${LANGFILE_${LANGUAGE}_NAME}' '${LANG_${LANGUAGE}}' '${LANG_${LANGUAGE}_CP}' "
|
|
#231# !else
|
|
#231# !ifdef MUI_LANGDLL_LANGUAGES_TEMP
|
|
#231# !undef MUI_LANGDLL_LANGUAGES_TEMP
|
|
#231# !endif
|
|
#231# !define MUI_LANGDLL_LANGUAGES_TEMP "${MUI_LANGDLL_LANGUAGES}"
|
|
#231# !undef MUI_LANGDLL_LANGUAGES
|
|
#231# !ifdef MUI_LANGDLL_LANGUAGES_CP_TEMP
|
|
#231# !undef MUI_LANGDLL_LANGUAGES_CP_TEMP
|
|
#231# !endif
|
|
#231# !define MUI_LANGDLL_LANGUAGES_CP_TEMP "${MUI_LANGDLL_LANGUAGES_CP}"
|
|
#231# !undef MUI_LANGDLL_LANGUAGES_CP
|
|
#231# !define MUI_LANGDLL_LANGUAGES "'${LANGFILE_${LANGUAGE}_NAME}' '${LANG_${LANGUAGE}}' ${MUI_LANGDLL_LANGUAGES_TEMP}"
|
|
#231# !define MUI_LANGDLL_LANGUAGES_CP "'${LANGFILE_${LANGUAGE}_NAME}' '${LANG_${LANGUAGE}}' '${LANG_${LANGUAGE}_CP}' ${MUI_LANGDLL_LANGUAGES_CP_TEMP}"
|
|
#231# !endif
|
|
#231# !verbose pop
|
|
#231#!macroend
|
|
|
|
#204#!macro MUI_LANGUAGE_PACK LANGUAGE
|
|
#204# !verbose push
|
|
#204# !verbose ${MUI_VERBOSE}
|
|
#204# !include "NSISPATHPLACEHOLDER\${LANGUAGE}_pack.nsh"
|
|
#204# !verbose pop
|
|
#204#!macroend
|
|
|
|
#204#!macro MUI_LANGUAGEFILE_PACK_BEGIN LANGUAGE
|
|
#204# !ifndef MUI_INSERT
|
|
#204# !define MUI_INSERT
|
|
#204# !insertmacro MUI_INSERT
|
|
#204# !endif
|
|
#204# LoadLanguageFile "NSISPATHPLACEHOLDER\${LANGUAGE}_pack.nlf"
|
|
#204#!macroend
|
|
|
|
; Language files
|
|
ALLLANGUAGESPLACEHOLDER
|
|
|
|
; Reserve files
|
|
;!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
|
|
|
|
; MUI end ------
|
|
|
|
Name "PRODUCTNAMEPLACEHOLDER PRODUCTVERSIONPLACEHOLDER"
|
|
OutFile "OUTPUTDIRPLACEHOLDER\DOWNLOADNAMEPLACEHOLDER"
|
|
; InstallDir "$DESKTOP\PRODUCTNAMEPLACEHOLDER PRODUCTVERSIONPLACEHOLDER Installation Files"
|
|
; ShowInstDetails show
|
|
|
|
Section "MainSection" SEC01
|
|
ALLFILESPLACEHOLDER
|
|
SectionEnd
|
|
|
|
Section -Post
|
|
|
|
StrCpy $R9 "false"
|
|
|
|
Call GetParameters
|
|
Pop $1
|
|
|
|
Push $1
|
|
Push "/EXTRACTONLY="
|
|
Call GetOptions
|
|
Pop $2
|
|
;MessageBox MB_OK "EXTRACTONLY: $2"
|
|
|
|
StrCmp $2 "ON" onPostDone callsetup
|
|
callsetup:
|
|
|
|
Push $1
|
|
Push "/INSTALLLOCATION="
|
|
Call GetOptions
|
|
Pop $2
|
|
;MessageBox MB_OK "INSTALLLOCATION: $2"
|
|
|
|
StrCmp $2 "" installnotset installset
|
|
installset:
|
|
StrCpy $3 'INSTALLLOCATION="$2"'
|
|
installnotset:
|
|
|
|
Push $1
|
|
Push "/INSTALLJAVA="
|
|
Call GetOptions
|
|
Pop $2
|
|
;MessageBox MB_OK "INSTALLJAVA: $2"
|
|
|
|
StrCmp $2 "ON" setinstalljava setdontinstalljava
|
|
setinstalljava:
|
|
StrCpy $R9 "true"
|
|
setdontinstalljava:
|
|
|
|
Push $1
|
|
Push "/GUILEVEL="
|
|
Call GetOptions
|
|
Pop $2
|
|
|
|
StrCmp $2 "" dontsetguilevel setguilevel
|
|
setguilevel:
|
|
StrCpy $7 "/"
|
|
StrCpy $7 $7$2
|
|
GoTo afterguilevel
|
|
dontsetguilevel:
|
|
StrCpy $7 "/qr"
|
|
afterguilevel:
|
|
|
|
;MessageBox MB_OK "GUILEVEL: $7"
|
|
|
|
Push $1
|
|
Push "/PARAM1="
|
|
Call GetOptions
|
|
Pop $2
|
|
;MessageBox MB_OK "PARAM1: $2"
|
|
|
|
StrCmp $2 "" param1notset param1set
|
|
param1set:
|
|
StrCpy $4 "$2"
|
|
param1notset:
|
|
|
|
|
|
Push $1
|
|
Push "/PARAM2="
|
|
Call GetOptions
|
|
Pop $2
|
|
;MessageBox MB_OK "PARAM2: $2"
|
|
|
|
StrCmp $2 "" param2notset param2set
|
|
param2set:
|
|
StrCpy $5 "$2"
|
|
param2notset:
|
|
|
|
|
|
Push $1
|
|
Push "/PARAM3="
|
|
Call GetOptions
|
|
Pop $2
|
|
;MessageBox MB_OK "PARAM3: $2"
|
|
|
|
StrCmp $2 "" param3notset param3set
|
|
param3set:
|
|
StrCpy $6 "$2"
|
|
param3notset:
|
|
|
|
IfSilent onPostSilent onPostNoSilent
|
|
|
|
onPostSilent:
|
|
Push $1
|
|
Push "/POSTREMOVE="
|
|
Call GetOptions
|
|
Pop $2
|
|
;MessageBox MB_OK "POSTREMOVE: $2"
|
|
|
|
StrCmp $2 "ON" postremovesilent nopostremovesilent
|
|
nopostremovesilent:
|
|
StrCmp $R9 "true" installjava1 dontinstalljava1
|
|
installjava1:
|
|
ExecWait '$INSTDIR\java\WINDOWSJAVAFILENAMEPLACEHOLDER /s /v"/qn REBOOT=Suppress"'
|
|
dontinstalljava1:
|
|
ExecWait "$INSTDIR\setup.exe -lang $LANGUAGE $3 $4 $5 $6 $7 -ignore_running" $0
|
|
SetErrorLevel $0
|
|
Quit
|
|
GoTo onPostDone
|
|
postremovesilent:
|
|
StrCmp $R9 "true" installjava2 dontinstalljava2
|
|
installjava2:
|
|
ExecWait '$INSTDIR\java\WINDOWSJAVAFILENAMEPLACEHOLDER /s /v"/qn REBOOT=Suppress"'
|
|
dontinstalljava2:
|
|
ExecWait "$INSTDIR\setup.exe -lang $LANGUAGE $3 $4 $5 $6 $7 -ignore_running" $0
|
|
RMDir /r $INSTDIR
|
|
RMDir $INSTDIR
|
|
SetErrorLevel $0
|
|
Quit
|
|
GoTo onPostDone
|
|
|
|
onPostNoSilent:
|
|
Push $1
|
|
Push "/POSTREMOVE="
|
|
Call GetOptions
|
|
Pop $2
|
|
;MessageBox MB_OK "POSTREMOVE: $2"
|
|
|
|
StrCmp $2 "ON" postremove nopostremove
|
|
nopostremove:
|
|
Exec "$INSTDIR\setup.exe -lang $LANGUAGE $3 $4 $5 $6"
|
|
Quit
|
|
GoTo onPostDone
|
|
postremove:
|
|
StrCmp $R9 "true" installjava3 dontinstalljava3
|
|
installjava3:
|
|
ExecWait '$INSTDIR\java\WINDOWSJAVAFILENAMEPLACEHOLDER /s /v"/qr REBOOT=Suppress"'
|
|
dontinstalljava3:
|
|
ExecWait "$INSTDIR\setup.exe -lang $LANGUAGE $3 $4 $5 $6" $0
|
|
RMDir /r $INSTDIR
|
|
RMDir $INSTDIR
|
|
SetErrorLevel $0
|
|
Quit
|
|
GoTo onPostDone
|
|
|
|
onPostDone:
|
|
|
|
SectionEnd
|