# HG changeset patch # User John Donoghue # Date 1523045700 14400 # Node ID 982484a78b7555424b41bc5aac0ce553a3a04fdc # Parent 7eebfda7daa16f2cd7474c50463d48718c5265e5 nsis-installer: check for java using same tests of octave uses (Bug #53572) * tools/makeinst-script.sh.in: check for RuntimeLib using java 8 & java 9 registry positions diff -r 7eebfda7daa1 -r 982484a78b75 tools/makeinst-script.sh.in --- a/tools/makeinst-script.sh.in Thu Apr 05 16:40:33 2018 -0400 +++ b/tools/makeinst-script.sh.in Fri Apr 06 16:15:00 2018 -0400 @@ -647,22 +647,28 @@ Push \$R0 Push \$R1 - ; use javaw.exe to avoid dosbox. - ; use java.exe to keep stdout/stderr - !define JAVAEXE "javaw.exe" - + # get the version + ClearErrors + ReadEnvStr \$R1 "JAVA_VERSION" + StrCmp \$R1 "" 0 have_java_version ClearErrors - ReadEnvStr \$R0 "JAVA_HOME" - StrCpy \$R0 "\$R0\\bin\\\${JAVAEXE}" - IfErrors 0 continue ;; 1) found it in JAVA_HOME - - ClearErrors + ReadRegStr \$R1 HKLM "SOFTWARE\\JavaSoft\\JRE" "CurrentVersion" + IfErrors 0 have_java_version ReadRegStr \$R1 HKLM "SOFTWARE\\JavaSoft\\Java Runtime Environment" "CurrentVersion" - ReadRegStr \$R0 HKLM "SOFTWARE\\JavaSoft\\Java Runtime Environment\\\$R1" "JavaHome" - StrCpy \$R0 "\$R0\\bin\\\${JAVAEXE}" + IfErrors JRE_Error have_java_version - IfErrors 0 continue ;; 2) found it in the registry - IfErrors JRE_Error + have_java_version: + ClearErrors + ReadRegStr \$R0 HKLM "SOFTWARE\\JavaSoft\\JRE\\\$R1" "RuntimeLib" + IfErrors 0 have_java_runtime + ReadRegStr \$R0 HKLM "SOFTWARE\\JavaSoft\\Java Runtime Environment\\\$R1" "RuntimeLib" + IfErrors JRE_Error have_java_runtime + + have_java_runtime: + # have runtime in R0 - check actual file is there + StrCmp \$R0 "" JRE_Error 0 + ClearErrors + IfFileExists \$R0 continue JRE_Error JRE_Error: MessageBox MB_ICONEXCLAMATION|MB_YESNO "Octave has the capability to call Java libraries, but the installer was unable to find a Java Runtime Environment (JRE) on this system. Octave will still function without a JRE, only certain specific functions will be disabled. If a JRE is installed later, Octave should be able to detect and use it automatically. Continue with installation?" /SD IDYES IDYES continue