Skip to content

feat: 应用自更新(Wails OTA),首版 macOS 不做覆盖更新 #46

Description

@yujiezhang-ops

会议要求「基于 Wails 自带的 OTA 自动更新框架实现项目自更新」,同时明确「首版暂不实现 macOS 应用覆盖更新,避免触发系统安全权限限制」。

当前状态:完全没有

全仓库 grep selfupdate / SelfUpdate / OTA / autoupdateinternal/cmd/frontend/src/零命中。现有的更新能力全部是针对被管理的 Agent(internal/app/update.go 更新 npm/uv 包),不是 OneAgent 自身。

用户拿到 0.0.1 之后没有任何途径知道有新版本,只能自己回 GitHub 看。

与 macOS 限制的关系

会议的判断是对的,而且当前打包方式让问题更明确:build-artifacts.yml:126 只做 ad-hoc 签名

codesign --force --deep --sign - "bin/OneAgent.app"

ad-hoc 签名的应用没有稳定身份,就地替换 .app 会破坏已有的 Gatekeeper 放行记录,用户每次更新后都要重新手动放行。所以首版做「检查并提示 + 打开下载页」而不是「下载并覆盖」是合理的。

另外发行渠道仍是 technical-preview-unsignedREADME.md:17),在有正式签名之前,静默覆盖更新不应该做。

建议范围(首版)

  1. 一个检查接口:读取 GitHub Releases 的 latest tag,与 internal/version.Version 比较
  2. 有新版时在界面提示,按钮跳转到 Release 页面,不自己下载不自己替换
  3. 检查动作要走 internal/ 已有的超时与脱敏约定;这是首个主动对外网请求,需要确认它符合 docs/product-boundary-baseline.md(该文件把网络访问边界写死,新增出站请求建议先确认是否需要 ADR)
  4. 检查失败必须静默降级,不能因为拿不到版本信息就阻塞界面

依赖

版本号本身还没有唯一真源,也没有在界面上展示,见 #45。那个先做,否则「当前版本」比较的对象是空字符串。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions