-def checkProgAlternatives(description, progs, rc_entry = [],
- alt_rc_entry = [], path = [], not_found = ''):
+def check_java():
+ """ Check for Java, don't give up as often as checkProg, using platform-dependent techniques """
+ if os.name == 'nt':
+ # Check in the registry.
+ try: # Python 3.
+ import winreg
+ except ImportError: # Python 2.
+ import _winreg as winreg
+
+ potential_keys_64b = ["SOFTWARE\\JavaSoft\\Java Runtime Environment", "SOFTWARE\\JavaSoft\\Java Development Kit",
+ "SOFTWARE\\JavaSoft\\JDK", "SOFTWARE\\JavaSoft\\JRE"]
+ potential_keys_32b = [k.replace('SOFTWARE', 'SOFTWARE\\WOW6432Node') for k in potential_keys_64b]
+ potential_keys = potential_keys_64b + potential_keys_32b
+
+ reg_hive = winreg.HKEY_LOCAL_MACHINE
+ for key in potential_keys:
+ try:
+ with winreg.OpenKey(reg_hive, key) as reg_key:
+ version = winreg.QueryValueEx(reg_key, "CurrentVersion")[0]
+ with winreg.OpenKey(reg_hive, key + '\\' + version) as reg_key:
+ java_bin = winreg.QueryValueEx(reg_key, "JavaHome")[0] + '\\bin\\java.exe'
+ logger.info('+checking for java: found in Windows registry, ' + str(java_bin))
+ return java_bin
+ except OSError:
+ pass
+
+ # The test failed, no Java found.
+ return ''
+ else:
+ return ''
+
+
+def checkProgAlternatives(description, progs, rc_entry=None,
+ alt_rc_entry=None, path=None, not_found=''):