office-gobmx/setup_native/source/win32/nsis/downloadtemplate.nsi
2010-10-06 23:15:15 +02:00

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