自动更新检测

NQBot 启动后会读取 runtime/appsettings.json 的 updateUrl,在后台检查新版本;也可以在“帮助 → 检查更新”手动检查。

1. 配置

{
  "updateUrl": "https://example.com/nqbot/update.json"
}
  • 为空:不自动检查;手动检查会提示未配置。
  • 支持 http:// / https://。
  • 建议使用 HTTPS。

2. 通用 update.json 格式

{
  "version": "1.0.1",
  "url": "https://example.com/nqbot/NQBot-1.0.1.zip",
  "notes": "1. 修复插件状态显示\n2. 优化更新检测"
}
  • version:最新版本号,支持 1.0.1 或 v1.0.1。
  • url:下载页/安装包地址,仅允许 http/https。
  • notes:更新说明,支持换行。

3. GitHub / GitCode Releases API

也可以直接填 Releases API:

https://api.github.com/repos/<owner>/<repo>/releases/latest

解析字段:

  • tag_name → 版本号
  • html_url → 下载/发布页
  • body → 更新说明

GitCode 的 Releases API 如返回同样的 tag_name / html_url / body 字段也可直接使用。

GitCode 仓库文件 API(推荐,无需发 Release)

https://api.gitcode.com/api/v5/repos/Muo_/NQBot/contents/update.json?ref=main

该接口返回 { "encoding": "base64", "content": "..." },NQBot 会自动解码后再解析 update.json。仓库文件更新后即可生效,不需要创建 Release。

4. 版本比较

  • 当前版本取程序集版本(NQBot.App.csproj 的 <Version>)。
  • 远端版本必须严格大于当前版本才提示。
  • 版本号使用 System.Version 解析,建议使用 主.次.修订 三段。

5. 发布流程建议

  1. 修改 src/NQBot.App/NQBot.App.csproj 的 <Version>。
  2. 构建/发布便携包。
  3. 上传安装包到 Releases 或对象存储。
  4. 更新 update.json 的 version、url、notes。
  5. 用户下次启动即可收到提示。

6. 安全

  • 只打开 http/https 下载地址,避免 file:// 或自定义协议。
  • 更新源应使用 HTTPS,防止中间人篡改版本信息。
  • 下载后建议校验文件哈希/签名(可在 update.json 中扩展 sha256 字段,当前版本暂未强制校验)。