Upgrade SDK

检查、下载、校验、安装,交给 SDK

把「怎么升级」从每个项目里抽出来:统一协议、服务端判定是否有更新、下载后强制校验 SHA256。业务代码只关心「有没有更新」和「什么时候重启」。

.NET 已可用Tauri / Android 设计中NuGet 0.1.0-preview.1

支持矩阵

端包状态
Windows(.NET / WPF / WinUI)Justwei.AppCenter.Upgrade(net10.0,零第三方依赖)已实现,NuGet 可安装
Windows(Tauri)appcenter-upgrade(Rust)+ @appcenter/upgrade-tauri设计中
Androidappcenter-upgrade(AAR)设计中
Web—不做下载,只做检查与跳转
iOS / macOS—跳转 App Store / 下载页

快速开始(.NET)

NuGet 预览版已发布(目标框架 net10.0),也可以工程引用接入。 WPF 与 WinUI 共用同一套逻辑,差别只在 UI。

using Justwei.AppCenter.Upgrade;

using var client = new AppCenterUpgradeClient(new AppCenterOptions
{
    BaseUrl = "https://api.app.justwei.com",
    Identifier = "my-browser",          // 平台上的应用标识
    Platform = AppPlatform.Windows,
    Arch = "x64",
});

var check = await client.CheckAsync();  // hasUpdate 由服务端判定
if (!check.HasUpdate)
{
    return;                             // 已是最新,不提示
}

var file = await client.DownloadAsync(check,
    new Progress<DownloadProgress>(p => Console.WriteLine($"{p.Percent:0}%")));

await client.InstallAsync(file);        // 拉起 Updater / 安装器,随后退出主程序

它替你做了这些

  • 判定更新:hasUpdate 由服务端算,客户端不再自己比版本号;
  • 选对产物:多架构版本按 arch 选择,返回里带 artifactId;
  • 断点续传:复用 .part;服务端不支持 Range 时自动整包重下,不会拼坏;
  • 完整性校验:sha256 不符即删文件并抛 ChecksumMismatch;
  • 拉起安装:zip 交给同目录 Updater.exe,exe/msi 直接运行安装器。

协议

一次检查就是一次 POST,匿名,不需要密钥:

POST /api/app/upgrade/check
Content-Type: application/json

{
  "platform": 1,
  "identifier": "my-browser",
  "currentVersionName": "0.1.27",
  "arch": "x64"
}

命中新版本时返回(节选):

{
  "hasUpdate": true,
  "isMandatory": false,
  "versionName": "0.1.28",
  "changelog": "- 切换到 AppCenter 升级通道",
  "fileName": "MyBrowser-0.1.28.zip",
  "artifactId": "3a2460e1-…",
  "size": 112895568,
  "sha256": "d3b59349…",
  "downloadUrl": "https://api.app.justwei.com/api/app/upgrade/download/…"
}

安装方式

产物SDK 行为
.zip调同目录 Updater.exe(独立进程,等主程序退出后原子替换并重启)
.exe / .msi直接运行安装器(Tauri / NSIS 等),安装逻辑交给安装器自己
其他类型抛 UnsupportedPackage,不猜测

调用 InstallAsync 之后,主程序必须尽快退出 —— 运行中的 exe 无法被覆盖。

错误码

枚举含义与处理
InvalidConfiguration缺标识、非 https 等,启动期就该暴露
NetworkError网络失败或超时,可退避重试
ServerError服务端非 2xx,带 HTTP 状态码
DownloadFailed下载中断、磁盘写入失败、大小不符
ChecksumMismatchSHA256 不一致,文件已删除
InstallerNotFound缺 Updater.exe,检查分发时是否漏带
InstallFailed待安装文件不存在
UnsupportedPackage / UnsupportedPlatform产物类型或平台不支持自安装

获取方式

NuGet 预览版已发布,目标框架 net10.0:

dotnet add package Justwei.AppCenter.Upgrade --prerelease

刚发布时搜索索引可能滞后,可显式指定版本: dotnet add package Justwei.AppCenter.Upgrade --version 0.1.0-preview.1。 包 ID 与命名空间均为 Justwei.AppCenter.Upgrade。

Tauri crate、Android AAR 仍在设计中,完成后会在这里补下载入口;当前也可以工程引用 ProjectReference 接入。

发版侧(把版本送到平台)用 CLI,见 CLI 工具。