Import error messages

This commit is contained in:
Glavo 2022-02-08 01:46:09 +08:00 committed by Yuhui Huang
parent 20ddf60c48
commit 48785e93f0
3 changed files with 40 additions and 7 deletions

View File

@ -8,9 +8,9 @@ $chinese = [System.Globalization.CultureInfo]::CurrentCulture.Name -eq 'zh-CN'
[Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$result = if ($chinese) {
[System.Windows.Forms.MessageBox]::Show('HMCL 需要 Java 运行时环境才能正常运行,是否自动下载安装 Java', 'HMCL', [System.Windows.Forms.MessageBoxButtons]::YesNo)
[System.Windows.Forms.MessageBox]::Show("HMCL 需要 Java 运行时环境才能正常运行,是否自动下载安装 Java", '未能在这台电脑上找到 Java', [System.Windows.Forms.MessageBoxButtons]::YesNo)
} else {
[System.Windows.Forms.MessageBox]::Show('Running HMCL requires a Java runtime environment. Do you want to download and install Java automatically?', 'HMCL', [System.Windows.Forms.MessageBoxButtons]::YesNo)
[System.Windows.Forms.MessageBox]::Show("Running HMCL requires a Java runtime environment. `nDo you want to download and install Java automatically?", 'Java not found', [System.Windows.Forms.MessageBoxButtons]::YesNo)
}
if ($result -ne [System.Windows.Forms.DialogResult]::Yes) {
@ -92,7 +92,18 @@ $form.Controls.Add($layout)
[System.ComponentModel.AsyncCompletedEventHandler]$downloadFileCompletedEventHandler = {
param($sender, [System.ComponentModel.AsyncCompletedEventArgs]$CompletedEventArgs)
if (!$form.IsDisposed) {
$form.DialogResult = [System.Windows.Forms.DialogResult]::OK
if ($CompletedEventArgs.Cancelled) {
$form.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
} elseif ($CompletedEventArgs.Error -ne $null) {
if ($chinese) {
[System.Windows.Forms.MessageBox]::Show($CompletedEventArgs.Error.Message, '下载失败', [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Exclamation)
} else {
[System.Windows.Forms.MessageBox]::Show($CompletedEventArgs.Error.Message, 'Download failed', [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Exclamation)
}
$form.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
} else {
$form.DialogResult = [System.Windows.Forms.DialogResult]::OK
}
}
}

View File

@ -1,4 +1,8 @@
#pragma once
#define ERROR_PROMPT L"Java installation cannot be found in this computer, please download it from https://www.microsoft.com/openjdk \n" \
L"未能在这台电脑上找到Java请从 https://www.microsoft.com/openjdk 下载安装Java"
#define ERROR_PROMPT L"Java installation cannot be found in this computer,\n"\
L"please download it from %s.\n"\
L"Click 'OK' to go to the download page."
#define ERROR_PROMPT_ZH L"未能在这台电脑上找到 Java请从 %s 下载安装 Java。\n"\
L"点击“确定”立即前往下载页面。"

View File

@ -67,6 +67,15 @@ int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
exeName = exeName.substr(last_slash + 1);
}
bool useChinese;
{
LCID lcid = GetUserDefaultUILanguage();
WCHAR nameBuffer[LOCALE_NAME_MAX_LENGTH];
useChinese = (LCIDToLocaleName(lcid, nameBuffer, LOCALE_NAME_MAX_LENGTH, 0) != 0)
&& (lstrcmp(nameBuffer, L"zh-CN") == 0);
}
OSVERSIONINFOEX osvi;
DWORDLONG dwlConditionMask = 0;
int op = VER_GREATER_EQUAL;
@ -191,7 +200,16 @@ int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
}
error:
MessageBox(NULL, ERROR_PROMPT, L"Error", MB_ICONERROR | MB_OK);
ShellExecute(0, 0, L"https://www.microsoft.com/openjdk", 0, 0, SW_SHOW);
LPCWSTR downloadLink = isWin7OrLater && (isX64 || isARM64) ? L"https://www.microsoft.com/openjdk" : L"https://java.com";
WCHAR errorPrompt[180];
{
LPCWSTR errorPromptFormat = useChinese ? ERROR_PROMPT_ZH : ERROR_PROMPT;
wsprintf(errorPrompt, errorPromptFormat, downloadLink);
}
if (IDOK == MessageBox(NULL, errorPrompt, L"Error", MB_ICONERROR | MB_OKCANCEL)) {
ShellExecute(0, 0, downloadLink, 0, 0, SW_SHOW);
}
return 1;
}