跳到主要内容

Component Introduction

1. GeneralUpdate是什么?

更新无限,升级无界。

GeneralUpdate是一款基于.NET Standard2.0 Apache协议开源的跨平台应用程序自动升级组件。

GithubGiteeGitCode

【如果您所在的企业正在或准备使用遇到任何问题、选型非常欢迎进入讨论组进行沟通,联系方式在本页面底部。开发人员如果遇到紧急任务,请提前说明情况,您的询问将优先得到解决。】

一句话理解

把 Client(你的主程序)、Upgrade(升级进程)、Server(更新服务)和 Tools(打包工具)拆开,通过 manifest + IPC 加密契约串联成一个全自动的更新闭环

2. GeneralUpdate提供什么?

组件功能
功能是否支持备注
断点续传支持单次更新失败时,下次一次启动时继续上一次更新下载更新包内容。(引用组件默认生效)
逐版本更新支持客户端当前版本如果与服务器相差多个版本,则根据多个版本的发布日期逐个更新。(引用组件默认生效)
二进制差分更新支持对比新老版本通过差分算法生成补丁文件。(引用组件默认生效)
增量更新功能支持相比上一个版本只更新当前修改过的文件,并且删除当前版本不存在的文件。(引用组件默认生效)
强制更新支持打开客户端之后直接强制更新。
多分支更新支持当一个产品有多个分支时,需要根据不同的分支更新对应的内容。
最新版本推送支持基于Signal R实现,推送当前最新版本。
多语言支持跨平台运行,组件语言无关,可作为更新”脚本”用于任何语言的应用程序。
跳过更新支持支持注入弹窗让用户决定是否更新本次发布,服务端决定强制时更新不生效。
相互升级支持主程序可更新升级程序,升级程序可更新主程序。
黑名单支持在更新过程中会跳过黑名单中的文件列表和文件扩展名列表。
OSS支持极简化更新,是一套独立的更新机制。只需要在文件服务器中放置version.json的版本配置文件。组件会根据配置文件中的版本信息进行更新下载。
回滚、备份支持更新之前会将客户端本地文件备份,如果客户端启动失败或崩溃则回滚覆盖。
驱动更新支持基于GeneralUpdate.Drivelution组件实现跨平台驱动自动更新,支持Windows、Linux平台。提供驱动验证、备份、回滚、签名验证、权限管理等完整功能。
扩展管理支持基于GeneralUpdate.Extension组件实现类似VS Code的扩展系统,管理Lua/Python等扩展插件。支持扩展目录管理、远程查询、下载队列、版本兼容性检查、多平台支持、依赖解析、回滚机制和事件通知等功能。
自定义方法列表支持注入一个自定义方法集合,该集合会在更新启动前执行。执行自定义方法列表如果出现任何异常,将通过异常订阅通知。(推荐在更新之前检查当前软件环境)
多协议认证支持支持 HMAC-SHA256、Bearer Token、API Key、HTTP Basic 四种认证方案,可自定义扩展。
静默更新支持后台轮询版本、静默下载、进程退出时触发升级,用户无感知完成更新。
并发下载支持多资源包并发下载,支持断点续传和 SHA256 校验,可配置并发数。
文件树比对支持新旧版本目录结构级差异对比,生成增量文件清单。
AOT支持支持AOT编译发布。
身份认证支持HTTP请求服务器资源可传递(token)身份认证信息。

3.GeneralUpdate支持什么?

.NET框架
框架名称是否支持
.NET Core 2.0支持
.NET 5 ... to last version支持
.NET Framework 4.6.1支持
UI框架
UI框架名称是否支持适配贡献者
WPF支持JusterZhu
UWP商店模式下不可更新lindexi
MAUI目前仅支持Android平台JusterZhu
Avalonia支持JusterZhu
WinUI支持JusterZhu
Console支持JusterZhu
WinForms支持JusterZhu
操作系统
操作系统名称是否支持适配贡献者
Windows支持JusterZhu
Linux支持JusterZhu
Android支持JusterZhu
麒麟V10(飞腾S2500)支持
麒麟V10(飞腾FT-2000)支持姚圣伟
麒麟V10(x64)支持
Ubuntu支持JusterZhu
华为欧拉(EulerOS-鲲鹏Kunpeng)支持姚圣伟
龙芯(Loongnix LoongArch)支持Avalonia中文社区(董彬 Rabbitism)
Apple Mac (M1)支持JusterZhu
统信UOS支持JusterZhu

4.仓库

名称说明仓库
GeneralUpdate自动更新GitHub
Gitee
GitCode
GeneralUpdate.MauiMaui自动更新(安卓)GitHub
Gitee
GitCode
GeneralUpdate.Tools更新补丁包制作工具GitHub
Gitee
GitCode
GeneralUpdate-Samples使用示例GitHub
Gitee
GitCode

5.统一语言

在开始使用GeneralUpdate之前我们需要先知道体系中的一些基础概念,同时请下载GeneralUpdate-Samples仓库到本地并进入..\GeneralUpdate-Samples\src目录下对照查看便于理解。

名称说明解释
Client被更新的客户端。你想更新QQ那么QQ就是Client。
Upgrade升级程序是一个独立的进程。需要和Client放在同一级目录下,在使用(或编码) 的过程中不可以和任何业务或设计关联、必须保持独立引用。QQ 无法在运行时更新自身的文件,这时候Upgrade来完成这件事情。
Packet更新补丁包经常玩游戏的玩家会经常听到“补丁”的概念,补丁的作用通常用于更新游戏中的一些漏洞或者游戏内容,那么在这里也有同样的概念。更新补丁包里的内容是新旧版本中具有文件内容差异或新增文件、需要删除的文件。
Server服务端应用提供版本更新信息管理、补丁包管理、版本验证功能。(在Samples中只提供了简单示例并不能满足这些功能,需要企业或个人开发者自行实现或购买GeneralSpacestation服务)。
GeneralUpdate.Tools更新补丁包制作工具是本开源项目提供的打包工具,用于生成更新补丁包(.zip文件格式)。
快速启动
版本号执行标准

GeneralUpdate 遵循语义化版本规范的核心原则(MAJOR.MINOR.PATCH),并基于 .NET System.Version 兼容性扩展了第四个 Revision 段(MAJOR.MINOR.PATCH.REVISION)。