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

整合包元文件 override 无法用 "." 表示压缩包根目录 #5506

Open
2 tasks done
MUYUTwilighter opened this issue Jan 25, 2025 · 0 comments
Open
2 tasks done
Labels
· 优化 处理中 开发者正在调查或处理该项 🟨 中 优先度:中

Comments

@MUYUTwilighter
Copy link

MUYUTwilighter commented Jan 25, 2025

检查项

描述

CurseForge 标准的整合包元文件中,可以在 override 字段中指定需要覆写的整合包文件相对于压缩包的位置。但是 PCL 2(2.8.12)无法将 空字符串,"." 或 "./" 识别为整合包根目录(即无法将压缩包根目录下的所有文件安装到版本文件夹下)。
考虑目录的反序列化 API 的相关调用导致的这一问题?

原因

我是一个整合包作者,在设计整合包项目管理器时,如果我可以将 override 设置为压缩包根目录的话,则我可以为客户端与服务端设计一个通用的打包程序。这个程序允许我只编辑一次需要覆盖的文件即可不需额外处理地把这些文件导出为双端的安装/部署包。

我的整合包有关这个 issue 的处理逻辑如下(源码):

  1. 客户端 & 服务端的打包逻辑
    客户端和服务端的打包是将 common 模块下的文件复制到临时文件夹后,再将 client(或 server)模块下的文件整合后打包放入输出文件夹。
    如果这里使用 override 或者其他子文件夹来存储这些覆盖文件,则服务端打包的压缩包在部署后将无法识别它们。
  2. 服务端的测试运行逻辑
    首先,管理器会将 common 模块下的文件复制(覆盖)到 run 文件夹下,然后将 server 模块下的文件整合进 run 目录后启动运行脚本。这里与上文同理,使用子文件夹会导致一些问题。

这个打包的逻辑确实会将 manifest.json 在安装时输出到版本目录下,但是也仅仅只有这一个文件是多余的,而且这个文件几乎不可能会大到影响磁盘空间(我给出的仓库有大约200个模组,也不过44kB)。

此外,我在 HMCL、CurseForge App 等支持 CurseForge 格式整合包的启动器下做了测试,它们都能够正常识别到 "." 并将覆盖文件放置在版本文件内。

@MUYUTwilighter MUYUTwilighter added · 优化 新提交 需要社区初步确认其有效的新提交 labels Jan 25, 2025
@Pigeon0v0 Pigeon0v0 added 等待确认 已经过社区确认,等待开发者确认 and removed 新提交 需要社区初步确认其有效的新提交 labels Jan 25, 2025
@LTCatt LTCatt added 处理中 开发者正在调查或处理该项 🟨 中 优先度:中 and removed 等待确认 已经过社区确认,等待开发者确认 labels Jan 25, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
· 优化 处理中 开发者正在调查或处理该项 🟨 中 优先度:中
Projects
None yet
Development

No branches or pull requests

3 participants