create teststand/ starting with a clone of altosui/
[fw/altos] / teststand / Instdrv / NSIS / Includes / java.nsh
diff --git a/teststand/Instdrv/NSIS/Includes/java.nsh b/teststand/Instdrv/NSIS/Includes/java.nsh
new file mode 100644 (file)
index 0000000..8e0e208
--- /dev/null
@@ -0,0 +1,181 @@
+!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} "java.com"
+  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