🎨 GeneralUpdate 更新界面生成指南
如果你的应用需要让用户看到更新进度(而不是在后台静默更新),这个页面会帮你生成合适 的 UI 代码。
先理解:两个程序各自显示什么
GeneralUpdate 是双进程架构,更新时两个程序都会显示界面:
你的主程序(Client)
显示 "检查更新 → 下载进度"
用户能看到:正在下载 45% / 下载速度 / 剩余时间
↓ 下载完成后启动 ↓
升级程序(Upgrade)
显示 "正在安装更新,请稍候..."
用户能看到:安装进度条 / 安装失败提示
Client 端:负责下载,适合显示进度条、速度、版本信息 Upgrade 端:负责安装替换文件,过程很快,通常只显示等待界面
你属于哪种情况?
| 情况 | 需要做什么 |
|---|---|
| 已有主程序,想要加更新窗口 | 在现有项目上加一个更新窗口(本页会帮你生成) |
| 从零开始搭建 | 先用 generalupdate-init 搭建双项目结构,再回来加 UI |
| 不需要进度 UI(静默更新) | 走 generalupdate-strategy 的静默模式 |
支持哪些 UI 框架
| 框架 | 模板文件 | 特点 |
|---|---|---|
| WPF + LayUI.Wpf | LayUIStyle.xaml | 玻璃效果进度条 |
| WPF + WPFDevelopers | WPFDevelopersStyle.xaml | 圆形进度 + 呼吸灯动画 |
| Avalonia + SemiUrsa | SemiUrsaClientView.axaml | 跨平台,暗黑切换 |
| WinForms + AntdUI | AntdUIStyle.cs | 暗黑主题 |
| MAUI | MauiUpdatePage.xaml | 移动端 + 桌面端 |
无论哪种框架,更新窗口的逻辑都是相同的,只是界面样式不同。
更新窗口的 4 个关键状态
一个更新窗口本质上就是一个状态机,只有 4 种主要状态:
┌────────────────────────────────────────────────────┐
│ ① 检查中 │
│ "正在检查更新..." │
│ │ │
│ ▼ │
│ ② 下载中(核心状态) │
│ ┌────────────────────────────────────────────────┐│
│ │ MyApp_2.0.0.0.zip 45% ││
│ │ ████████████████░░░░░░░░░ ││
│ │ 下载速度: 3.2 MB/s 剩余: 12秒 ││
│ └────────────────────────────────────────────────┘│
│ │ │
│ ▼ │
│ ③ 安装中 │
│ "正在安装更新,请勿关闭计算机..." │
│ │ │
│ ▼ │
│ ④ 完成 / 失败 │
│ "更新完成!" / "下载失败,请重试" │
└────────────────────────────────────────────────────┘
除了这 4 种主要状态,还可能有"已是最新版本"、"暂停"、"重试"等子状态,但新手只需要关注 ① 和 ②。
如何把更新进度连到 UI 上?
GeneralUpdate 的事件系统会告诉你进度变化,你只需要把事件里的数字填到 UI 控件上:
// GeneralUpdate 更新进度事件 → 更新你的 UI 控件
bootstrap.AddListenerMultiDownloadStatistics((_, e) =>
{
// e.ProgressPercentage → 你的进度条 Value(0-100)
// e.Speed → 你的下载速度标签
// e.Remaining → 你的剩余时间标签
// e.BytesReceived → 已下载字节
// e.TotalBytesToReceive → 总字节
});
就是这么简单。核心工作就是把事件里的 5 个数字绑定到 UI 控件上。