diff --git a/bin/WinLauncher/WinLauncher.exe b/bin/WinLauncher/WinLauncher.exe index 2abafcbf608f..7b4b83cc8940 100644 Binary files a/bin/WinLauncher/WinLauncher.exe and b/bin/WinLauncher/WinLauncher.exe differ diff --git a/bin/WinLauncher/WinLauncher64.exe b/bin/WinLauncher/WinLauncher64.exe index cb2a078e3f02..a2a81c602487 100644 Binary files a/bin/WinLauncher/WinLauncher64.exe and b/bin/WinLauncher/WinLauncher64.exe differ diff --git a/native/WinLauncher/WinLauncher/WinLauncher.cpp b/native/WinLauncher/WinLauncher/WinLauncher.cpp index 373fc7dce30b..c88e6afd2d1a 100644 --- a/native/WinLauncher/WinLauncher/WinLauncher.cpp +++ b/native/WinLauncher/WinLauncher/WinLauncher.cpp @@ -192,13 +192,22 @@ bool FindJVMInRegistryKey(const char* key, bool wow64_32) bool FindJVMInRegistryWithVersion(const char* version, bool wow64_32) { - const char* keyName = LoadStdString(IDS_JDK_ONLY) == std::string("true") - ? "Java Development Kit" - : "Java Runtime Environment"; - + char* keyName = "Java Runtime Environment"; + bool foundJava = false; char buf[_MAX_PATH]; - sprintf_s(buf, "Software\\JavaSoft\\%s\\%s", keyName, version); - return FindJVMInRegistryKey(buf, wow64_32); + //search jre in registry if the product doesn't require tools.jar + if (LoadStdString(IDS_JDK_ONLY) != std::string("true")) { + sprintf_s(buf, "Software\\JavaSoft\\%s\\%s", keyName, version); + foundJava = FindJVMInRegistryKey(buf, wow64_32); + } + + //search jdk in registry if the product requires tools.jar or jre isn't installed. + if (!foundJava) { + keyName = "Java Development Kit"; + sprintf_s(buf, "Software\\JavaSoft\\%s\\%s", keyName, version); + foundJava = FindJVMInRegistryKey(buf, wow64_32); + } + return foundJava; } bool FindJVMInRegistry()