跳到主要内容

⚙️ GeneralUpdate 更新策略完全指南

⚠️ 针对 NuGet v10.4.6 稳定版。该版本使用 Configinfo 配置,无可编程 Option 系统。


策略决策树

你的应用有后端服务吗?
├── 有
│ ├── 需要服务端主动推送更新? → SignalR 推送
│ └── 否 → 标准客户端-服务端

└── 没有(只有对象存储 S3/MinIO/OSS)
└── OSS 标准

6 种策略详细对比

策略服务端说明
① 标准客户端-服务端✅ GeneralSpacestation有后端的中大型应用(推荐入门)
② OSS 对象存储❌ 仅 S3/MinIO无后端,最低成本
③ 静默更新✅ 同①或②后台无声升级
④ 差分更新✅ 需差分构建增量补丁节省带宽
⑤ 跨版本 CVP✅ 需 CVP 构建跳过中间版本直跳
⑥ SignalR 推送✅ 需 SignalR Hub服务端主动推送

集成代码

所有策略使用相同的 Configinfo 配置模式:

using GeneralUpdate.Core;
using GeneralUpdate.Common.Shared.Object;

var config = new Configinfo
{
UpdateUrl = "https://your-server.com/api",
AppSecretKey = "your-secret-key",
AppName = "MyApp.exe",
MainAppName = "MyApp.exe",
ClientVersion = "1.0.0.0",
ProductId = "my-product-001",
InstallPath = ".",
};

await new GeneralUpdateBootstrap()
.SetConfig(config)
.AddListener*(...)
.LaunchAsync();

具体示例参见 examples/ 目录下的策略文件。


混合组合策略

组合典型场景
OSS + Silent游戏启动器 / kiosk — 从 CDN 拉取,无需用户交互
Standard + Differential首次全量下载,后续差分补丁
CVP + Differential跨版本跳跃 + 单一差分补丁
Standard + Push后端推送通知,用户点击下载

平台特定差异

平台特性
Windows完整功能。使用 Bowl 崩溃守护(在未处理异常时重启应用总线)。完全文件系统访问。
Linux / macOS⚠️ v10.4.6 无 UnixPermissionHooks,需手动 chmod +x。目标框架建议 .NET 8+。

已知问题

#问题规避方案
1OSS 模式不区分 Main/Upgrade 更新接受此行为
2UpgradeApp.exe 必须放在 update/ 子目录按规范部署
3NuGet 版本冲突导致 "Method not found"Client 和 Upgrade 使用相同版本号
4无限升级循环确保 manifest.json 版本号正确
5SignalR HubConnection Dispose 后重连崩溃Dispose 时将连接置 null

相关技能