!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