本文档记录桌面版发布流程。Windows x64 使用 electron-builder 的 NSIS target;macOS 使用 dmg target。
-
准备依赖:
bun install
-
准备 release payload。仓库根目录必须存在:
runtime/python/python.exe 或 runtime/python/bin/python3 runtime/python/DLLs/ 或 runtime/python/lib/ runtime/python/Lib/ 或 runtime/python/lib/python3.12/ runtime/python/Scripts/pip.exe 或 runtime/python/bin/pip runtime/git/bin/git.exe runtime/opencode/opencode.exe resources/opencode/plugin_code.md modules/MaiBot/bot.py modules/MaiBot/plugins/napcat-adapter/ modules/MaiBot/plugins/snowluma-adapter/ modules/napcat/NapCatWinBootMain.exe 或 modules/napcat/napcat-macos-launch.sh modules/SnowLuma/index.mjsruntime/python必须保持为便携 Python,只保留 Python 自身、pip/setuptools/wheel以及启动依赖解析需要的packaging。不要把 MaiBot、dashboard 或其它应用依赖预装进runtime/python/Lib/site-packages或runtime/python/lib/python3.12/site-packages;首次启动会复制可写python-env并把运行依赖安装到其中。resources/opencode/plugin_code.md会在打包时复制到安装包资源目录的runtime/opencode/plugin_code.md,用于编写器内置 OpenCode 的默认插件编写说明。 -
执行发布检查:
bun run release:check
-
构建 Windows x64 安装包:
bun run release:win
安装包会输出到 release/:
release/MaiBot OK-<version>-win.exe
release/MaiBot OK-<version>-win.exe.blockmap
release/latest-win.yml
Windows Release 工作流是手动触发的。推荐上传一个 payload zip 到稳定位置,然后在工作流输入里填写:
payload_url:zip 下载地址。payload_sha256:可选,填了会校验 zip 完整性。create_github_release:是否创建 draft GitHub Release。tag_name:创建 GitHub Release 时必填,例如v0.1.0。prerelease:是否标记为预发布。
payload zip 支持两种结构:
payload.zip
runtime/
modules/
或:
payload.zip
MaiBotOneKeyPayload/
runtime/
modules/
安装器卸载时不会删除 Electron userData。应用 userData 按安装目录 hash 隔离,所以同一台机器复制两份安装目录时,可以分别运行两套实例与数据。
模块代码更新策略另行实现:后续强制覆盖模块代码时,需要保留配置和数据,并要求用户二次确认。
- 安装器可正常安装到默认目录和自定义目录。
- 同一安装目录重复启动只保留一个实例。
- 复制两份安装目录后可以分别启动。
- MaiBot Core 和 NapCat 能被 Electron 启停。
- 端口冲突时明确报错,不复用外部进程。
- 关闭窗口时能选择最小化或全部退出。
- 强杀服务后再次启动不会残留 PTY session。