一款基于 .NET 开源、跨平台应用程序自动升级组件

0 阅读4分钟

前言

今天大姚给分享分享一款基于 .NET 开源免费、跨平台应用程序自动升级组件:GeneralUpdate。

项目介绍

GeneralUpdate 是一个基于 .NET Standard 2.0 的跨平台应用程序自动升级组件(桌面客户端自动升级解决方案),项目遵循 Apache 2.0 协议开源。该组件不依赖任何 UI 框架,旨在减少更新产生的资源消耗。通过提供一键启动示例,帮助开发者快速理解如何将自动升级功能集成到自己的应用程序中。

应用场景

GeneralUpdate 适用于需要自动更新功能的各类应用程序,包括但不限于:

  • 桌面应用程序:如 WPF、WinForms、Avalonia、MAUI(仅支持 Android 平台)等开发的桌面软件。
  • 控制台应用程序:需要定期或按需更新的后台服务或工具。
  • 跨平台应用:支持 Windows、Linux、macOS 等多平台的应用程序更新。

支持功能

基础更新策略

功能说明
断点续传更新失败后下次启动可继续下载未完成包,提升大文件更新稳定性。
逐版本更新多版本差距时按发布日期顺序逐步升级,避免跳跃式更新导致兼容问题。
二进制差分更新通过差值算法生成补丁文件,仅传输变更部分,节省带宽与时间。
增量更新功能仅更新修改过的文件并删除废弃文件,实现最小化变更集。
强制更新客户端启动即触发更新,确保用户始终使用最新合规版本。

分支与推送机制

功能说明
多分支更新支持产品多分支并行开发,各分支独立配置更新内容。
最新版本推送基于 SignalR 实时推送当前最新版通知,实现主动更新提醒。

用户体验与控制

功能说明
跳过更新允许用户弹窗选择是否更新本次发布;服务端强制更新时此选项失效。
相互升级主程序与升级程序可互相更新,形成闭环自洽的更新体系。
黑名单更新过程中自动跳过指定文件或扩展名列表,防止误覆盖关键资源。

部署与运维增强

功能说明
OSS 极简更新只需在服务器放置 version.json 配置文件,组件自动识别并下载对应版本。
回滚/备份更新前本地备份,若启动失败或崩溃则自动恢复至上一稳定版本。
驱动更新基于 GeneralUpdate.Drivelution 实现跨平台驱动自动更新(Win/Linux/macOS),含签名验证、权限管理等完整流程。

扩展与高级特性

功能说明
扩展管理类似 VS Code 插件系统,支持目录管理、远程查询、依赖解析、事件通知等。
自定义方法列表注入自定义方法集合,在更新前执行预处理逻辑,异常时订阅通知。
AOT 编译支持支持 Ahead-of-Time 编译发布,适配高性能或受限环境需求。
身份认证HTTP 请求中传递 token 进行资源访问控制,保障更新源安全性。

支持框架

.NET 框架支持情况

.NET框架名称是否支持
.NET Core 2.0支持
.NET 5 ... to last version支持
.NET Framework 4.6.1支持

UI 框架支持情况

UI框架名称是否支持
WPF支持
UWP商店模式下不可更新
MAUI目前仅支持Android平台
Avalonia支持
WinUI支持
Console支持
WinForms支持

支持操作系统

操作系统名称是否支持
Windows支持
Android (.NET MAUI)支持
麒麟V10(飞腾S2500)支持
麒麟V10(飞腾FT-2000)支持
麒麟V10(x64)支持
Ubuntu 24.04.1 LTS支持
龙芯(Loongnix LoongArch 3A6000)支持
华为欧拉(EulerOS-鲲鹏Kunpeng)支持
Apple Mac (M1)支持
统信UOS (x64)支持

项目效果演示

项目源码地址

更多项目实用功能和特性欢迎前往项目开源地址查看👀,别忘了给项目一个Star支持💖。

优秀项目和框架精选

该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没🤞)。