Skip to content

ci: Modify CI procedure to avoid duplicated framework in macOS application & Fix steamapi startup issue on macOS - #676

Merged
MakinoharaShoko merged 4 commits into
OpenWebGAL:devfrom
yan-xiaoo:main
Nov 2, 2026
Merged

MakinoharaShoko merged 4 commits into
OpenWebGAL:devfrom
yan-xiaoo:main

Conversation

@yan-xiaoo

Copy link
Copy Markdown

macOS 打包构建 WebGAL_Electron_Template 时,由于复制 electron-builder 生成的文件时采用了 cp -r 命令,导致 macOS app 内部的符号链接被展开为三份重复的文件,占用了大量的存储空间。本 PR 通过改进打包流程解决了重复存储的问题,并解决了 steam api 解包错误导致导出后游戏无法启动的问题。

具体问题

如下三个文件是 electron 自身的框架文件,按照 macOS app 规范,它们应该通过符号链接相连,只占用一份存储空间,大小均为约 314.1MB:

  • WebGAL_Electron_Template/Contents/Frameworks/Electron Framework.framework/Electron Framework
  • WebGAL_Electron_Template/Contents/Frameworks/Electron Framework.framework/Versions/Current/Electron Framework
  • WebGAL_Electron_Template/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework

不过,由于复制时破坏了符号链接,它们占用了三份空间,最终导致整个程序大小达到了约 1.41 GB。

关于 Steam api:在 macOS 上,由于 Electron 自身的 asar 库在打包时无法识别 .webgal_terre 这样的点开头隐藏目录,libsteam_api.dylib 没有正确的被放到 ASAR 的外部,从而导致启动时程序无法找到该库,无法启动任何导出的游戏。

Windows 打包额外复制 steam_api64.dll 到可执行文件同目录,因此不会出现该问题。

修复方式

  1. 将 cp -r 命令改为保留符号链接的 cp -R -P -p
  2. 在压缩打包后的程序时,用 ditto 代替 7z 以保护压缩包中的符号链接。ditto 同样是 GitHub Action 环境下的可用 ma cOS 命令。
  3. 在导出制作的 WebGal 游戏为桌面端游戏时,启用 verbatimSymlinks: true,从而保护导出游戏内部 electron 框架的符号链接。
  4. 通过修改 unpackDir 修复了 steam api 无法加载的错误。

效果

macOS universal 安装压缩包的体积从约 547MB 减少到约 243MB,解压后程序占用空间从 1.41GB 减少到约 575MB (约减少 59%)。
默认模版(WebGal 2026 Refine)创建的游戏导出后体积从 785MB 减少到约 448MB(约减少 45%)。

测试

我补充了一些额外的测试,来检测复制后符号链接是否仍然能保持,以及检查 steam api 解包路径修改是否正确。此外,我测试了修改后的新版本,编辑器可以正常运行,导出的 WebGal 游戏也可以正常运行。

AI 使用情况

GPT-6.1 Sol 协助完成了问题的定位和修复,我进行了审查和实际运行测试。commit message 与此 PR 的内容是我自己编写的。

其他

我主要使用 Mac,对自己的开源项目也设计过不少 macOS 打包的流程。如果需要,我很乐意对目前的打包再做一些优化,例如:

  • 目前已经有 Mac 和 Mac Intel 两个版本,其中前者的所有软件架构都是 Universal(即同时支持 arm64 + x86_64)的。既然有专门支持 x86_64 的 Intel 版本,我觉得可以考虑瘦身前者,将可执行文件改为只包含 arm64 版本,这样可以进一步减少程序的体积。

MakinoharaShoko and others added 3 commits October 8, 2026 22:47
修复了 macOS 打包时没有保留 .app 内部符号链接,导致 electron framework 被重复打包三次的问题
修复了 unpack 位置配置问题,导致 steam api 没有被解包,从而导致导出的游戏在 macOS 上无法启动的问题。
@yan-xiaoo
yan-xiaoo changed the base branch from main to dev October 29, 2026 15:17
@MakinoharaShoko
MakinoharaShoko merged commit 4b43564 into OpenWebGAL:dev Nov 2, 2026
7 checks passed
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.

2 participants