插件发布与打包指南
从打包.qplugin 到上架商店的完整流程。API 细节见插件商店 API 参考。
.qplugin 是什么
.qplugin 就是一个 zip 压缩包,但有一条硬性规则:manifest.json 必须位于压缩包根目录。
manifest.json 最小模板
⚠️ Windows 用户必读:反斜杠 \ 问题
这是 Windows 打包最常见的翻车点,报错长这样:
原因
部分 Windows 工具(老版「发送到压缩文件夹」、PowerShell 5.1 的Compress-Archive 等)生成 zip 时用 \ 作为条目路径分隔符。zip 规范要求用 /。商店与启动器会拒绝含 \ 的包——这是防 zip-slip 路径穿越攻击的安全校验,不会放宽。
解决
- ✅ 用下方 PowerShell 一键脚本(自动替换为
/) - ✅ 用 7-Zip 图形界面压缩
- ✅ 用 PowerShell 7+ 的
Compress-Archive - ❌ 避开 Windows 10 老版右键「发送到 → 压缩文件夹」、PowerShell 5.1
方法一:PowerShell 一键打包脚本(推荐)
支持弹窗选文件夹、自动强制正斜杠。保存为pack.ps1,右键「使用 PowerShell 运行」或命令行执行 .\pack.ps1 -FolderPath D:\path\to\dist:
dist),并确保 manifest.json 在这个目录的根层级。
方法二:其他常用方式
7-Zip(图形界面)
- 进入
dist文件夹,全选内容文件(不要选外层文件夹) - 右键 → 7-Zip → 添加到压缩包
- 生成的 zip 内部路径天然是
/
PowerShell 7+
命令行校验包内路径
上传前自查 zip 条目是否还有反斜杠:\。
上传发布
方式一:qomicex publish(一键,推荐)
CLI 走 RFC 8628 设备流,全程命令行完成:
POST /developer/keys 上传开发者公钥获取证书 → 私钥签名包体(signature.json + signature.cert.json 打进 .qplugin)→ 查找/创建插件记录 → POST /plugins/:id/versions multipart 上传。详见 qomicex CLI 工具参考。
方式二:网页手动上传
- 登录 插件商店 → 升级为开发者
- 开发者中心 → 新建插件(填 slug、名称、分类)
- 上传前必须先用 CLI 签名(商店强制验签):
-
插件管理页 → 「上传新版本」→ 选择签名后的
.qplugin(把 zip 改后缀为.qplugin) - 纯 L3 层且无危险权限的包自动发布;其余进入人工审核,结果在版本列表查看
-
商店上传强制验签:缺
signature.json或验签失败 → 422signature_invalid,上传被拒 -
签名 = Ed25519 三级信任链(商店根钥签发开发者公钥证书 → 开发者私钥签包体),
signedHash为规范化 manifest + 文件清单的 SHA-256 -
密钥生成:
openssl genpkey -algorithm Ed25519 -out dev-key.pem或node scripts/plugin-keygen.mjs(无子命令,可选--out <path>/--json/--force,默认写入plugin-key.json)