X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altosui%2FInstdrv%2FNSIS%2FIncludes%2Fjava.nsh;h=a457562b334df59214783119a4816035dfda0309;hp=d989ddd6693726b5e035d16f813541323ebbac62;hb=25cdbf15e7284eb963070b28dd886aa299af6487;hpb=a7c7e10b3bbfbdf9667d071634cdd6fdf12a1f85 diff --git a/altosui/Instdrv/NSIS/Includes/java.nsh b/altosui/Instdrv/NSIS/Includes/java.nsh index d989ddd6..a457562b 100644 --- a/altosui/Instdrv/NSIS/Includes/java.nsh +++ b/altosui/Instdrv/NSIS/Includes/java.nsh @@ -2,153 +2,119 @@ ; Definitions for Java Detection -!define JRE_VERSION "1.6" -!define JRE32_URL "http://javadl.sun.com/webapps/download/AutoDL?BundleId=52247&/jre-6u27-windows-i586.exe" -!define JRE64_URL "http://javadl.sun.com/webapps/download/AutoDL?BundleId=52249&/jre-6u27-windows-x64.exe" - -Var JavaDownload -Var JavaBits +!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 GetJRE - ${If} ${RunningX64} - StrCpy $JavaDownload ${JRE64_URL} - StrCpy $JavaBits "64" - ${Else} - StrCpy $JavaDownload ${JRE32_URL} - StrCpy $JavaBits "32" - ${EndIf} - - MessageBox MB_OK "This product uses Java ${JRE_VERSION}, \ - $JavaBits bits, it will now \ - be downloaded and installed" - - StrCpy $2 "$TEMP\Java Runtime Environment.exe" - nsisdl::download /TIMEOUT=30000 $JavaDownload $2 - Pop $R0 ;Get the return value - StrCmp $R0 "success" +3 - MessageBox MB_OK "Download failed: $R0" - Quit - ExecWait $2 - Delete $2 +Function openLinkNewWindow + Push $3 + Exch + Push $2 + Exch + Push $1 + Exch + Push $0 + Exch + + ReadRegStr $0 HKCR "http\shell\open\command" "" +# 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 ${JRE_VERSION}" - - ; Check in HKCU for CurrentVersion - - ClearErrors - ReadRegStr $2 HKCU "SOFTWARE\JavaSoft\Java Runtime Environment" \ - "CurrentVersion" - - IfErrors hkcuwow_version - - DetailPrint "HKEY_CURRENT_USER Java version $2" - - ${VersionCompare} $2 ${JRE_VERSION} $3 - - IntCmp $3 1 yes yes no - -hkcuwow_version: - - ; Check in HKCU Wow6432Node for CurrentVersion - - ClearErrors - ReadRegStr $2 HKCU "SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment" \ - "CurrentVersion" - - Iferrors hklm_version - - DetailPrint "HKEY_CURRENT_USER Wow6432Node Java version $2" + DetailPrint "Desired Java version ${JAVA_VERSION}" - ${VersionCompare} $2 ${JRE_VERSION} $3 - - IntCmp $3 1 yes yes no - -hklm_version: - - ; Check in HKLM for CurrentVersion - - ClearErrors - ReadRegStr $2 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" \ - "CurrentVersion" + SearchPath $0 javaw.exe + IfErrors no - IfErrors hklmwow_version - - DetailPrint "HKEY_LOCAL_MACHINE Java version $2" - - ${VersionCompare} $2 ${JRE_VERSION} $3 - - IntCmp $3 1 yes yes no - -hklmwow_version: - - ; Check in HKLM Wow6432Node for CurrentVersion - - ClearErrors - ReadRegStr $2 HKLM "SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment" \ - "CurrentVersion" - - Iferrors hkcu_any - - DetailPrint "HKEY_LOCAL_MACHINE Wow6432Node Java version $2" - - ${VersionCompare} $2 ${JRE_VERSION} $3 + DetailPrint "Detected java in $0" - IntCmp $3 1 yes yes no + ${GetFileVersion} "$0" $1 + IfErrors no -hkcu_any: + DetailPrint "Java version $1" - ; Check in HKCU for any Java install - - StrCpy $0 0 - -hkcu_any_loop: - EnumRegKey $1 HKCU "SOFTWARE\JavaSoft" $0 - - StrCmp $1 "Java Runtime Environment" found_hkcu - - StrCmp $1 "" hklm_any - - IntOp $0 $0 + 1 - - Goto hkcu_any_loop - -found_hkcu: - - DetailPrint "HKEY_CURRENT_USER has SOFTWARE\JavaSoft\$1" - - Goto maybe - -hklm_any: - - ; Check in HKCU for any Java install - - StrCpy $0 0 - -hklm_any_loop: - EnumRegKey $1 HKLM "SOFTWARE\JavaSoft" $0 - - StrCmp $1 "Java Runtime Environment" found_hklm - - StrCmp $1 "" no - - IntOp $0 $0 + 1 - - Goto hklm_any_loop - -found_hklm: - - DetailPrint "HKEY_CURRENT_USER has SOFTWARE\JavaSoft\$1" - - Goto maybe + ${VersionCompare} $1 ${JAVA_VERSION} $2 + IntCmp $2 1 yes yes old yes: StrCpy $0 2 Goto done -maybe: +old: StrCpy $0 1 Goto done @@ -168,26 +134,28 @@ var install var quit var skip +Function GetJRE + ${OpenURL} "java.com" + MessageBox MB_OK "Click OK to continue after completing the Java Install." +FunctionEnd + Function DetectJRE Call DoDetectJRE - IntCmp $0 1 ask_maybe ask_no yes + IntCmp $0 1 ask_old ask_no yes ask_no: - StrCpy $0 "No Java detected. Download and install?" + StrCpy $0 "Cannot find Java. Download and install?" Goto ask -ask_maybe: - StrCpy $0 "Cannot determine installed Java version. Download and install?" +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 -bail: - Abort - do_java: Call GetJRE