Print messages directly to console in non-GUI mode.

This commit is contained in:
LoRd_MuldeR 2020-10-04 23:04:48 +02:00
parent 2a5e624757
commit 26ac902313
3 changed files with 23 additions and 11 deletions

View File

@ -40,7 +40,7 @@ else
endif endif
CFLAGS += -municode -march=$(MARCH) -mtune=$(MTUNE) CFLAGS += -municode -march=$(MARCH) -mtune=$(MTUNE)
LDFLAGS = -lcomctl32 -lgdi32 LDFLAGS = -lcomctl32
MANIFEST := tmp/assets/manifest.$(CPU_ARCH).xml MANIFEST := tmp/assets/manifest.$(CPU_ARCH).xml

View File

@ -55,7 +55,8 @@
// Const // Const
static const wchar_t *const JRE_DOWNLOAD_LINK_DEFAULT = L"https://adoptopenjdk.net/"; static const wchar_t *const JRE_DOWNLOAD_LINK_DEFAULT = L"https://adoptopenjdk.net/";
static const wchar_t *const JRE_RELATIVE_PATH_DEFAULT = L"runtime\\bin\\javaw.exe"; static const wchar_t *const JRE_RELATIVE_PATH_DEFAULT = L"runtime\\bin";
static const wchar_t *const JRE_EXECUTABLE_NAME = L5J_ENABLE_GUI ? L"javaw.exe" : L"java.exe";
static const size_t MIN_MUTEXID_LENGTH = 5U; static const size_t MIN_MUTEXID_LENGTH = 5U;
static const DWORD SPLASH_SCREEN_TIMEOUT = 30000U; static const DWORD SPLASH_SCREEN_TIMEOUT = 30000U;
@ -859,7 +860,7 @@ static ULONGLONG parse_java_version(const wchar_t *const version_str)
static DWORD detect_java_runtime_verify(const wchar_t **const executable_path_out, const HKEY root_key, const wchar_t *const full_reg_path, const BOOL reg_view_64bit) static DWORD detect_java_runtime_verify(const wchar_t **const executable_path_out, const HKEY root_key, const wchar_t *const full_reg_path, const BOOL reg_view_64bit)
{ {
static const wchar_t *const JAVA_REG_NAMES[] = { L"JavaHome", L"Path", L"InstallationPath", NULL }; static const wchar_t *const JAVA_REG_NAMES[] = { L"JavaHome", L"Path", L"InstallationPath", NULL };
static const wchar_t *const JAVA_EXE_PATHS[] = { L"%s\\jre\\bin\\javaw.exe", L"%s\\bin\\javaw.exe", NULL }; static const wchar_t *const JAVA_EXE_PATHS[] = { L"%s\\jre\\bin\\%s", L"%s\\bin\\%s", NULL };
*executable_path_out = NULL; *executable_path_out = NULL;
DWORD result = 0U; DWORD result = 0U;
@ -874,10 +875,10 @@ static DWORD detect_java_runtime_verify(const wchar_t **const executable_path_ou
{ {
for (size_t j = 0U; JAVA_EXE_PATHS[j] && (!result); ++j) for (size_t j = 0U; JAVA_EXE_PATHS[j] && (!result); ++j)
{ {
const wchar_t *const javaw_executable_path = aswprintf(JAVA_EXE_PATHS[j], java_home_path); const wchar_t *const java_executable_path = aswprintf(JAVA_EXE_PATHS[j], java_home_path, JRE_EXECUTABLE_NAME);
if (javaw_executable_path) if (java_executable_path)
{ {
const wchar_t *const absolute_executable_path = get_absolute_path(javaw_executable_path); const wchar_t *const absolute_executable_path = get_absolute_path(java_executable_path);
if (absolute_executable_path) if (absolute_executable_path)
{ {
const DWORD bitness = file_is_executable(absolute_executable_path); const DWORD bitness = file_is_executable(absolute_executable_path);
@ -891,7 +892,7 @@ static DWORD detect_java_runtime_verify(const wchar_t **const executable_path_ou
free((void*)absolute_executable_path); free((void*)absolute_executable_path);
} }
} }
free((void*)javaw_executable_path); free((void*)java_executable_path);
} }
} }
} }
@ -1090,7 +1091,7 @@ static DWORD load_java_bitness(const HINSTANCE hinstance, const UINT id)
static const wchar_t *get_java_full_path(const wchar_t *const jre_base_path, const wchar_t *const jre_relative_path) static const wchar_t *get_java_full_path(const wchar_t *const jre_base_path, const wchar_t *const jre_relative_path)
{ {
const wchar_t *const relative_path_ptr = AVAILABLE(jre_relative_path) ? skip_leading_separator(jre_relative_path) : NULL; const wchar_t *const relative_path_ptr = AVAILABLE(jre_relative_path) ? skip_leading_separator(jre_relative_path) : NULL;
return aswprintf(L"%s\\%s", jre_base_path, NOT_EMPTY(relative_path_ptr) ? relative_path_ptr: JRE_RELATIVE_PATH_DEFAULT); return aswprintf(L"%s\\%s\\%s", jre_base_path, NOT_EMPTY(relative_path_ptr) ? relative_path_ptr: JRE_RELATIVE_PATH_DEFAULT, JRE_EXECUTABLE_NAME);
} }
/* ======================================================================== */ /* ======================================================================== */
@ -1347,7 +1348,11 @@ static const wchar_t *describe_system_error(const DWORD error_code)
return error_test; return error_test;
} }
#if L5J_ENABLE_GUI
#define show_message(HWND, FLAGS, TITLE, TEXT) MessageBoxW((HWND), (TEXT), (TITLE), (FLAGS)) #define show_message(HWND, FLAGS, TITLE, TEXT) MessageBoxW((HWND), (TEXT), (TITLE), (FLAGS))
#else
#define show_message(HWND, FLAGS, TITLE, TEXT) ({ const int _retval = __ms_fwprintf(stderr, L"%s\n", (TEXT)); fflush(stderr); _retval; })
#endif
static int show_message_format(HWND hwnd, const DWORD flags, const wchar_t *const title, const wchar_t *const format, ...) static int show_message_format(HWND hwnd, const DWORD flags, const wchar_t *const title, const wchar_t *const format, ...)
{ {
@ -1358,7 +1363,7 @@ static int show_message_format(HWND hwnd, const DWORD flags, const wchar_t *cons
const wchar_t *const text = vaswprintf(format, ap ); const wchar_t *const text = vaswprintf(format, ap );
if(NOT_EMPTY(text)) if(NOT_EMPTY(text))
{ {
result = MessageBoxW(hwnd, text, title, flags); result = show_message(hwnd, flags, title, text);
} }
free((void*)text); free((void*)text);
@ -1525,13 +1530,16 @@ static int launch5j_main(const HINSTANCE hinstance, const wchar_t *const cmd_lin
HANDLE mutex_handle = NULL; HANDLE mutex_handle = NULL;
DWORD java_required_bitness = 0U; DWORD java_required_bitness = 0U;
ULONGLONG java_required_ver_min = 0ULL, java_required_ver_max = 0ULL; ULONGLONG java_required_ver_min = 0ULL, java_required_ver_max = 0ULL;
HWND hwnd = NULL;
HGDIOBJ splash_image = NULL; HGDIOBJ splash_image = NULL;
BOOL have_screen_created = FALSE; BOOL have_screen_created = FALSE;
PROCESS_INFORMATION process_info; PROCESS_INFORMATION process_info;
STARTUPINFOW startup_info; STARTUPINFOW startup_info;
// Ensure that the ComCtl32 DLL is loaded // Ensure that the ComCtl32 DLL is loaded
#if L5J_ENABLE_GUI
InitCommonControls(); InitCommonControls();
#endif
// Initialize // Initialize
SecureZeroMemory(&startup_info, sizeof(STARTUPINFOW)); SecureZeroMemory(&startup_info, sizeof(STARTUPINFOW));
@ -1544,7 +1552,9 @@ static int launch5j_main(const HINSTANCE hinstance, const wchar_t *const cmd_lin
app_heading = load_string(hinstance, ID_STR_HEADING); app_heading = load_string(hinstance, ID_STR_HEADING);
// Create the window // Create the window
HWND hwnd = CreateWindowExW(WS_EX_TOOLWINDOW | WS_EX_TOPMOST, L"STATIC", APP_HEADING, WS_POPUP | SS_BITMAP, 0, 0, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hinstance, NULL); #if L5J_ENABLE_GUI
hwnd = CreateWindowExW(WS_EX_TOOLWINDOW | WS_EX_TOPMOST, L"STATIC", APP_HEADING, WS_POPUP | SS_BITMAP, 0, 0, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hinstance, NULL);
#endif
// Show about screen? // Show about screen?
if (starts_with(cmd_line_args, L"--l5j-about")) if (starts_with(cmd_line_args, L"--l5j-about"))
@ -1717,8 +1727,10 @@ cleanup:
close_handle(&process_info.hProcess); close_handle(&process_info.hProcess);
close_handle(&mutex_handle); close_handle(&mutex_handle);
#if L5J_ENABLE_GUI
destroy_window(&hwnd); destroy_window(&hwnd);
delete_object(&splash_image); delete_object(&splash_image);
#endif
free((void*)jvm_extra_args); free((void*)jvm_extra_args);
free((void*)cmd_extra_args); free((void*)cmd_extra_args);

View File

@ -40,7 +40,7 @@ else
endif endif
CFLAGS += -municode -march=$(MARCH) -mtune=$(MTUNE) CFLAGS += -municode -march=$(MARCH) -mtune=$(MTUNE)
LDFLAGS = -lcomctl32 -lgdi32 LDFLAGS = -lcomctl32
MANIFEST := tmp/assets/manifest.$(CPU_ARCH).xml MANIFEST := tmp/assets/manifest.$(CPU_ARCH).xml