Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

重构 HMCLauncher #3007

Open
wants to merge 22 commits into
base: main
Choose a base branch
from

Conversation

burningtnt
Copy link
Member

@burningtnt burningtnt commented Apr 22, 2024

  • 优先选择 Java 11+
  • 在 HMCL 检测到需要修复环境(如 Java 8 但不带 JFX,SSL 问题)时,让 HMCL 拉起 Launcher 装 Java
  • 支持更多 Java 扫描
    • HMCL_JAVA_HOME、JAVA_HOME
    • 注册表
    • PATH
    • Program Files
  • 在缺失 Java 时,主动下载至 .hmcl/runtime
  • 抗损坏的 Java
    MinecraftSTL:能点炒饭吗

目前 HMCLauncher 会按照以下步骤查找 JRE:

  • 查找环境变量 HMCL_JAVA_HOME,若存在则使用它启动游戏
  • 查找同目录下的 jre-x86/arm 等,若存在则使用它启动游戏
  • 查找环境变量 JAVA_HOME 及注册表中的内容并遍历。优先在启动选择 Java 11 以上版本启动,否则考虑 Java 8
  • 下载 JRE 到 .hmcl/runtime 内并用它启动游戏

任何一步中,若拉起的线程在五秒内退出,则判定为损坏并进入下一步。否则 HMCLauncher 将释放资源并退出

@burningtnt burningtnt marked this pull request as draft April 22, 2024 15:17
HMCLauncher/HMCL/java.cpp Outdated Show resolved Hide resolved
@hejiehao
Copy link
Contributor

为什么不从注册表取 Program Files 路径?

@burningtnt
Copy link
Member Author

为什么不从注册表取 Program Files 路径?

是这样做的。见 MySHGetFolderPath(CSIDL_PROGRAM_FILES, root)

@burningtnt

This comment was marked as outdated.

…nd HKey. Support giving priority to Java above 11.
@burningtnt burningtnt marked this pull request as ready for review April 26, 2024 14:58
@burningtnt
Copy link
Member Author

本 PR 计划中的功能已全部完成

@burningtnt burningtnt mentioned this pull request Apr 27, 2024
@burningtnt burningtnt requested a review from Glavo April 27, 2024 07:31
@zkitefly
Copy link
Member

有一个问题,如果设备上有 x86 32位的 Java,hmclauncher会如何选择

@burningtnt
Copy link
Member Author

有一个问题,如果设备上有 x86 32位的 Java,hmclauncher会如何选择

HMCLauncher 暂时还不会判断 Java 的位数

@zkitefly
Copy link
Member

Java的选择顺序是怎么样的
同一个检测方式,获取到了一样版本的Java,是如何选择的(

@burningtnt
Copy link
Member Author

Java的选择顺序是怎么样的
同一个检测方式,获取到了一样版本的Java,是如何选择的(

会优先选择 Java 11+,暂不支持关于位数或 JFX 的选择

@MCerror318
Copy link

这个版本似乎无法找到有效的JAVA22、23,这是否为正常表现?

@zkitefly
Copy link
Member

zkitefly commented May 3, 2024

这个版本似乎无法找到有效的JAVA22、23,这是否为正常表现?

你的 Java 22 23 安装在哪楼呢

@MCerror318
Copy link

这个版本似乎无法找到有效的JAVA22、23,这是否为正常表现?

你的 Java 22 23 安装在哪楼呢

默认的Java目录,安装的大部分第三方发行版都不可用。而甲骨文的build21可以识别路径,但是版本号和使用有问题。

@burningtnt
Copy link
Member Author

默认的Java目录,安装的大部分第三方发行版都不可用。而甲骨文的build21可以识别路径,但是版本号和使用有问题。

请提供一个测试环境

@MCerror318
Copy link

默认的Java目录,安装的大部分第三方发行版都不可用。而甲骨文的build21可以识别路径,但是版本号和使用有问题。

请提供一个测试环境

系统 Windows11专业工作站版23H2 
64G DDR4 3200Mhz RAM 
CPU i7-11700K @3.6GHZ
GPU ASUS DUAL-RTX4070 OC 12G
主板ASUS B560 M-K
SAMSUN 970EVO SSD
JDK 23 BUILD 21

@burningtnt
Copy link
Member Author

burningtnt commented May 4, 2024

默认的Java目录,安装的大部分第三方发行版都不可用。而甲骨文的build21可以识别路径,但是版本号和使用有问题。

请提供一个测试环境

系统 Windows11专业工作站版23H2  64G DDR4 3200Mhz RAM  CPU i7-11700K @3.6GHZ GPU ASUS DUAL-RTX4070 OC 12G 主板ASUS B560 M-K SAMSUN 970EVO SSD JDK 23 BUILD 21

…… 我要你的 Java 安装包,安装路径
谁要你这种硬件信息

@MCerror318
Copy link

默认的Java目录,安装的大部分第三方发行版都不可用。而甲骨文的build21可以识别路径,但是版本号和使用有问题。

请提供一个测试环境

系统 Windows11专业工作站版23H2 64G DDR4 3200Mhz RAM CPU i7-11700K @3.6GHZ GPU ASUS DUAL-RTX4070 OC 12G 主板ASUS B560 M-K SAMSUN 970EVO SSD JDK 23 BUILD 21

......我要你的 Java 安装包,安装路径 谁要你这种硬件信息

我还以为你要搞一个一模一样的硬件平台:(鬼哦 是我想多了这 玩意怎么可能.....
安装包https://download.java.net/java/early_access/jdk23/21/GPL/openjdk-23-ea+21_windows-x64_bin.zip
路径C:\Program Files\Java
别的应该都正常

@burningtnt
Copy link
Member Author

burningtnt commented May 5, 2024

安装包https://download.java.net/java/early_access/jdk23/21/GPL/openjdk-23-ea+21_windows-x64_bin.zip
路径C:\Program Files\Java
别的应该都正常

你的 java.exe 是否位于 C:\Program Files\Java\bin\jdk-23\java.exe
我这边测试下来是没问题的
image
请忽略图中无法补全 JavaFX 的报错。这是因为我没有给 Windows Sandbox 联网导致的

@MCerror318
Copy link

Member

是在路径里但是报错

@burningtnt
Copy link
Member Author

是在路径里但是报错

请提供更多信息。我根据你挤牙膏般提供出来的信息无法复现。麻烦不要惜字如金,否则我们无法解决您的问题

@burningtnt burningtnt force-pushed the feature/refactor-hmclauncher branch from e250df8 to 46f1984 Compare July 22, 2024 14:02
HMCLauncher/HMCL/main.cpp Outdated Show resolved Hide resolved
Comment on lines +123 to +127
file = L"/java/11.0.24+9/bellsoft-jre11.0.24+9-windows-aarch64-full.zip";
} else if (isX64) {
file = L"/java/11.0.24+9/bellsoft-jre11.0.24+9-windows-i586-full.zip";
} else {
file = L"/java/11.0.24+9/bellsoft-jre11.0.24+9-windows-amd64-full.zip";
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

或许可以做成能自动获得最新的版本,或者什么别的

硬编在这不太好吧

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants