安装升级与打包

XYGo Admin 2026-04-22 3 次阅读

安装/卸载流程、升级机制、ZIP打包分发

安装流程

复制代码
[1/9] 解压 ZIP 到临时目录
[2/9] 读取 addon.yaml,校验元信息
[3/9] 检查安装状态(全新安装 / 升级 / 覆盖重装 / 降级拒绝)
[4/9] 执行 install SQL(全新安装)或 upgrade SQL(升级)
[5/9] 安装扩展菜单(从 addon.yaml 声明式写入数据库)
[6/9] 备份旧版本文件(仅升级时,备份到 .backup/{name}-{oldVer}/)
[7/9] 复制扩展文件到隔离目录
[8/9] 更新 addons/addons.go(自动重新生成导入声明)
[9/9] 记录安装信息到 xy_addon 表

卸载流程

复制代码
[1/6] 确认卸载
[2/6] 执行 uninstall SQL(删表等)
[3/6] 卸载扩展菜单(按 remark='addon:{name}' 批量删除)
[4/6] 删除扩展目录(server/addons/{name}/ + web/src/addons/{name}/)
[5/6] 更新 addons/addons.go
[6/6] 更新 xy_addon 状态为已卸载

升级注意事项

  • 升级时执行 upgrade/ 目录下的 SQL,不是 install/
  • 升级前自动备份旧版文件到 server/addons/.backup/{name}-{oldVer}/
  • addon.yaml 中的 min_upgrade_from 可以限制最低可升级版本
  • 升级完成后会显示 changelog 中的更新日志
  • 菜单会先清除再重新写入(支持菜单变更)

打包分发

bash 复制代码
go run tools.go addon pack shop

生成 shop-1.0.0.zip,包含:

复制代码
shop-1.0.0.zip
├── addon.yaml
├── server/
├── web/
├── install/
├── uninstall/
└── upgrade/

用户拿到 ZIP 后重命名为 shop.zip,放入 server/addons/ 目录,执行 addon install shop 即可。


完整开发流程

bash 复制代码
# 1. 创建扩展骨架
cd server
go run tools.go addon create

# 2. 编辑建表 SQL
# 修改 server/addons/shop/install/pgsql.sql

# 3. 手动执行建表 SQL(开发阶段)

# 4. 生成数据模型
gf gen dao

# 5. 编写业务逻辑(controller/ 和 logic/)

# 6. 重启后端

# 7. 前端开发(web/src/addons/shop/views/)

# 8. 测试通过后打包
go run tools.go addon pack shop

注意事项

不要做的事

  • 不要修改 server/internal/ 下的核心代码
  • 不要在扩展中直接操作非 xy_{扩展名}_ 前缀的数据表
  • 不要注册与系统或其他扩展重名的路由、事件、任务
  • 不要在 install SQL 中手写菜单插入语句(使用 addon.yaml 声明)

命名规范汇总

项目 规范 示例
扩展标识 英文小写 shop
数据表 xy_{扩展名}_xxx xy_shop_order
API 路由 /admin/{扩展名}/{实体}/{操作} /admin/shop/order/list
菜单 name {PascalCase扩展名}XxxYyy ShopOrderList
WebSocket 事件 {扩展名}.{事件名} shop.orderNotify
队列 Topic {扩展名}.{模块}.{动作} shop.order.payment
定时任务 name {扩展名}.{任务描述} shop.order_timeout
Auth 端点 name 描述性名称 supplier