182 lines
2.6 KiB
NSIS

!include WordFunc.nsh
; Definitions for Java Detection
!define JAVA_VERSION "6.0"
Function GetFileVersion
!define GetFileVersion `!insertmacro GetFileVersionCall`
!macro GetFileVersionCall _FILE _RESULT
Push `${_FILE}`
Call GetFileVersion
Pop ${_RESULT}
!macroend
Exch $0
Push $1
Push $2
Push $3
Push $4
Push $5
Push $6
ClearErrors
GetDllVersion '$0' $1 $2
IfErrors error
IntOp $3 $1 >> 16
IntOp $3 $3 & 0x0000FFFF
IntOp $4 $1 & 0x0000FFFF
IntOp $5 $2 >> 16
IntOp $5 $5 & 0x0000FFFF
IntOp $6 $2 & 0x0000FFFF
StrCpy $0 '$3.$4.$5.$6'
goto end
error:
SetErrors
StrCpy $0 ''
end:
Pop $6
Pop $5
Pop $4
Pop $3
Pop $2
Pop $1
Exch $0
FunctionEnd
Function openLinkNewWindow
Push $3
Exch
Push $2
Exch
Push $1
Exch
Push $0
Exch
ReadRegStr $1 HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.html\UserChoice" "Progid"
IfErrors iexplore
Goto foundbrowser
iexplore:
StrCpy $1 "IE.AssocFile.HTM"
foundbrowser:
StrCpy $2 "\shell\open\command"
StrCpy $3 $1$2
ReadRegStr $0 HKCR $3 ""
# Get browser path
DetailPrint $0
StrCpy $2 '"'
StrCpy $1 $0 1
StrCmp $1 $2 +2 # if path is not enclosed in " look for space as final char
StrCpy $2 ' '
StrCpy $3 1
loop:
StrCpy $1 $0 1 $3
DetailPrint $1
StrCmp $1 $2 found
StrCmp $1 "" found
IntOp $3 $3 + 1
Goto loop
found:
StrCpy $1 $0 $3
StrCmp $2 " " +2
StrCpy $1 '$1"'
Pop $0
Exec '$1 $0'
Pop $0
Pop $1
Pop $2
Pop $3
FunctionEnd
!macro _OpenURL URL
Push "${URL}"
Call openLinkNewWindow
!macroend
!define OpenURL '!insertmacro "_OpenURL"'
Function DoDetectJRE
DetailPrint "Desired Java version ${JAVA_VERSION}"
SearchPath $0 javaw.exe
IfErrors no
DetailPrint "Detected java in $0"
${GetFileVersion} "$0" $1
IfErrors no
DetailPrint "Java version $1"
${VersionCompare} $1 ${JAVA_VERSION} $2
IntCmp $2 1 yes yes old
yes:
StrCpy $0 2
Goto done
old:
StrCpy $0 1
Goto done
no:
StrCpy $0 0
Goto done
done:
FunctionEnd
var dialog
var hwnd
var null
var install
var quit
var skip
Function GetJRE
${OpenURL} "adoptium.net"
MessageBox MB_OK "Click OK to continue after completing the Java Install."
FunctionEnd
Function DetectJRE
Call DoDetectJRE
IntCmp $0 1 ask_old ask_no yes
ask_no:
StrCpy $0 "Cannot find Java. Download and install?"
Goto ask
ask_old:
StrCpy $0 "Java version appears to be too old. Download and install?"
Goto ask
ask:
MessageBox MB_YESNOCANCEL $0 IDYES do_java IDNO skip_java
do_java:
Call GetJRE
skip_java:
yes:
FunctionEnd