Find Java in HMCL directory

This commit is contained in:
Glavo 2022-02-06 16:59:57 +08:00 committed by Yuhui Huang
parent 9ec10dc5dc
commit 4fe7d10872

View File

@ -86,27 +86,46 @@ int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
// Try java in PATH // Try java in PATH
RawLaunchJVM(L"javaw", workdir, exeName); RawLaunchJVM(L"javaw", workdir, exeName);
if (isX64) { std::wstring hmclJavaDir;
OSVERSIONINFOEX osvi; {
DWORDLONG dwlConditionMask = 0; WCHAR buffer[MAX_PATH];
int op = VER_GREATER_EQUAL; if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, 0, buffer))
|| SUCCEEDED(SHGetFolderPath(NULL, CSIDL_PROFILE, NULL, 0, buffer))) {
// Initialize the OSVERSIONINFOEX structure. PathAppend(buffer, L".hmcl");
ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX)); PathAppend(buffer, L"java");
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); if (isX64) {
osvi.dwMajorVersion = 6; PathAppend(buffer, L"windows-x86_64");
osvi.dwMinorVersion = 1; } else {
PathAppend(buffer, L"windows-x86");
// Initialize the condition mask. }
VER_SET_CONDITION(dwlConditionMask, VER_MAJORVERSION, op); PathAddBackslash(buffer);
VER_SET_CONDITION(dwlConditionMask, VER_MINORVERSION, op); hmclJavaDir = std::wstring(buffer);
// Try downloading Java on Windows 7 or later
if (VerifyVersionInfo(&osvi, VER_MAJORVERSION | VER_MINORVERSION, dwlConditionMask)) {
// TODO
} }
} }
if (!hmclJavaDir.empty()) {
FindJavaInDirAndLaunchJVM(hmclJavaDir, workdir, exeName);
if (isX64) {
OSVERSIONINFOEX osvi;
DWORDLONG dwlConditionMask = 0;
int op = VER_GREATER_EQUAL;
// Initialize the OSVERSIONINFOEX structure.
ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
osvi.dwMajorVersion = 6;
osvi.dwMinorVersion = 1;
// Initialize the condition mask.
VER_SET_CONDITION(dwlConditionMask, VER_MAJORVERSION, op);
VER_SET_CONDITION(dwlConditionMask, VER_MINORVERSION, op);
// Try downloading Java on Windows 7 or later
if (VerifyVersionInfo(&osvi, VER_MAJORVERSION | VER_MINORVERSION, dwlConditionMask)) {
// TODO
}
}
}
MessageBox(NULL, ERROR_PROMPT, L"Error", MB_ICONERROR | MB_OK); MessageBox(NULL, ERROR_PROMPT, L"Error", MB_ICONERROR | MB_OK);
ShellExecute(0, 0, L"https://www.microsoft.com/openjdk", 0, 0, SW_SHOW); ShellExecute(0, 0, L"https://www.microsoft.com/openjdk", 0, 0, SW_SHOW);