MCLF-CN / docs

公开的实现规范/文档
12 stars 0 forks source link

启动器共用公共组件 #5

Open IceCream-QAQ opened 7 months ago

IceCream-QAQ commented 7 months ago

检查项

您是什么类型的用户

启动器作者

请简单的说一下您的想法

启动器作者可以在公共位置写入一些公共组件以便其他启动器可以共同使用。 例如公共的 Java,Chromium 等等。

它能解决什么样的问题/带来什么样的帮助

不同的启动器可直接互通公共组件,以便节省磁盘空间。

期望的结果

在公共位置有按规则存放的公共组件。

是否有对这个方案的相关链接?

No response

附注

No response

bangbang93 commented 7 months ago

assets和library通用的话应该也能减轻镜像站的下载压力

ZhaiSoul commented 7 months ago

目前BakaXL在测试一个新功能,共享资源文件 image

开启后,将会询问用户是否合并所有资源文件(assets和libraries)至指定目录(默认官启目录) 用户也可以自行设定这个资源的目录。

开启后启动器下载资源文件时也会下载到这个路径下。

如果需要大家一起支持的话,可能需要考虑一下这个用户设置转移后怎么让其他启动器知道。

Pigeon0v0 commented 7 months ago

可以直接在一个目录放一个配置文件?

比如 %appdata%.minecraft\launcher_config.json 这样子

LTCatt commented 7 months ago

我的个人看法是……在现在这个游戏动辄几十 G 乃至一百多 G 的时代,已经没有必要考虑类似的空间问题了。 虽然它是好的,但考虑到开发者能开发启动器的总时间是固定的,为何不把时间花在更有用的地方呢(

ZhaiSoul commented 7 months ago

我的个人看法是……在现在这个游戏动辄几十 G 乃至一百多 G 的时代,已经没有必要考虑类似的空间问题了。 虽然它是好的,但考虑到开发者能开发启动器的总时间是固定的,为何不把时间花在更有用的地方呢(

大小的问题其实好解决,这个提议主要是想解决下载源压力过大的问题

IceCream-QAQ commented 7 months ago

我的个人看法是……在现在这个游戏动辄几十 G 乃至一百多 G 的时代,已经没有必要考虑类似的空间问题了。 虽然它是好的,但考虑到开发者能开发启动器的总时间是固定的,为何不把时间花在更有用的地方呢(

但实际上,开发者在考虑引用外部组件的时候总要考虑位置。 包括 Java 或是 Chromium 等等。 除了直接 inline 到自身的之外。 无论放在运行目录,还是放在公共目录并没有造成很长时间的开发任务。

wifi-left commented 7 months ago

作为用户的看法:

ZhaiSoul commented 7 months ago

作为用户的看法:

  • 首先是Chromium,这玩意儿任何一个electron应用都带一个,qq也带一个,微信也带一个,而且版本都不一样,不太现实。还有就是,如果真要省空间,其实直接调用Edge的webview会好很多,毕竟win10过后都是自带的。
  • 其次是Java,这玩意儿安装了不就本来是全局的文件吗?

目前OpenJDK并没有统一的安装路径,各家OpenJDK的注册表信息也不一样,甚至大部分只提供压缩包,没有安装程序。 目前BakaXL是尽可能接管了Java的管理工作,安装到了mc正版路径下,只给高级用户提供自定义Java选项。

burningtnt commented 7 months ago

目前 HMCL 是通过扫 C:/Program File[ (x86)]/XXX/XXX/bin/java.exe 实现的

目前OpenJDK并没有统一的安装路径,各家OpenJDK的注册表信息也不一样,甚至大部分只提供压缩包,没有安装程序。

这样的话,我们也没有办法去自动找到这个 Java 啊……

Silverteal commented 7 months ago

一般玩家的jdk一般不会是没有PATH的java,启动器应该找得到,高级玩家自己会下载jdk,也不需要启动器来提供,重点应该是asset和library吧

ZhaiSoul commented 7 months ago

一般玩家的jdk一般不会是没有PATH的java,启动器应该找得到,高级玩家自己会下载jdk,也不需要启动器来提供,重点应该是asset和library吧

Java8还好说,后面的版本基本上群魔乱舞,没有统一

Silverteal commented 7 months ago

一般玩家的jdk一般不会是没有PATH的java,启动器应该找得到,高级玩家自己会下载jdk,也不需要启动器来提供,重点应该是asset和library吧

Java8还好说,后面的版本基本上群魔乱舞,没有统一

我的意思就是对java不需要也没办法实现公共组件

ZhaiSoul commented 7 months ago

一般玩家的jdk一般不会是没有PATH的java,启动器应该找得到,高级玩家自己会下载jdk,也不需要启动器来提供,重点应该是asset和library吧

Java8还好说,后面的版本基本上群魔乱舞,没有统一

我的意思就是对java不需要也没办法实现公共组件

要做的话还是很简单,比如在.minecraft目录下放一个配置文件之类的

wifi-left commented 7 months ago

对于一般的Java安装器(Windows)来说,都会自动设置JAVA_HOME(安装时候默认选中) 我没记错了话HMCL的exe版本会自动扫描JAVA_HOME(或者PATH)并使用它启动

ZhaiSoul commented 7 months ago

对于一般的Java安装器(Windows)来说,都会自动设置JAVA_HOME(安装时候默认选中) 我没记错了话HMCL的exe版本会自动扫描JAVA_HOME(或者PATH)并使用它启动

然而大部分openjdk是没有安装程序的,只给你一个粗暴的压缩包

Silverteal commented 7 months ago

对于一般的Java安装器(Windows)来说,都会自动设置JAVA_HOME(安装时候默认选中) 我没记错了话HMCL的exe版本会自动扫描JAVA_HOME(或者PATH)并使用它启动

然而大部分openjdk是没有安装程序的,只给你一个粗暴的压缩包

这部分本来就不是启动器下载的java,启动器也没有办法管理吧

ZhaiSoul commented 7 months ago

对于一般的Java安装器(Windows)来说,都会自动设置JAVA_HOME(安装时候默认选中) 我没记错了话HMCL的exe版本会自动扫描JAVA_HOME(或者PATH)并使用它启动

然而大部分openjdk是没有安装程序的,只给你一个粗暴的压缩包

这部分本来就不是启动器下载的java,启动器也没有办法管理吧

目前的提议是,大家自己安装的组件(包括Java)能够有统一规范,能够让其他启动器也能使用到。 不是启动器下载的绿色版Java不在讨论范围内

IceCream-QAQ commented 7 months ago

作为用户的看法:

  • 首先是Chromium,这玩意儿任何一个electron应用都带一个,qq也带一个,微信也带一个,而且版本都不一样,不太现实。还有就是,如果真要省空间,其实直接调用Edge的webview会好很多,毕竟win10过后都是自带的。
  • 其次是Java,这玩意儿安装了不就本来是全局的文件吗?

WebView2 并没有完整实现 CEF 所有功能。 其次 并不是 所有版本的 Windows 都继承了 WebView2. 最后,还有 Linux 及 macOS 需要考虑。

对于 Java,有很多 Java 并不是安装版本不一定会写入到注册表。 而且有很多启动器会下载免安装的 Java。

z0z0r4 commented 7 months ago

Java 还能沾点边,有点意义

Chromium 组件是什么鬼...这种东西不应该去找 electron 的开发去提吗?这是启动器该管的事..............?超级大画饼

IceCream-QAQ commented 7 months ago

Java 还能沾点边,有点意义

Chromium 组件是什么鬼...这种东西不应该去找 electron 的开发去提吗?这是启动器该管的事..............?

这跟 Electron 有什么关系,不只有 Electron 在用 Chromium。 也不是所有基于 Chromium 构建 UI 的应用程序都是 Electron。

burningtnt commented 6 months ago

从另一个角度出发,完全没有必要统一公用哪些东西。 可以定下一个根目录,下方放置 .json,分别规范每一个组件的格式即可。比如 java.jsonelectron.json

IceCream-QAQ commented 6 months ago

从另一个角度出发,完全没有必要统一公用哪些东西。 可以定下一个根目录,下方放置 .json,分别规范每一个组件的格式即可。比如 java.jsonelectron.json

本来就不是统一公用,而是谁愿意用哪个就用愿意往哪放久往哪放。 而这个本来就是为了满足愿意公用的开发者商讨公共位置的。