Skip to main content

Component Introduction

1. What is GeneralUpdate?

Updates limitless, upgrades boundless.

GeneralUpdate is an open-source cross-platform application automatic update component based on .NET Standard 2.0 and licensed under the Apache license.

GithubGiteeGitCode

[If your company is currently using or planning to use [the product/service] and encountering any issues, or if you need assistance with selection, you are very welcome to join our discussion group for communication. The contact information can be found at the bottom of this page. Developers, if you encounter urgent tasks, please explain the situation in advance, and your inquiries will be prioritized for resolution.]

One Sentence to Understand

Separate Client (your main app), Upgrade (upgrade process), Server (update service), and Tools (packaging tool), then chain them together through manifest + IPC encrypted contract to form a fully automated update loop.

2. What does GeneralUpdate offer?

Component Features
FeatureSupportedNotes
Resume DownloadYesIf an update fails, it will resume downloading the update package the next time it starts. (Effective by default when the component is referenced)
Version-by-Version UpdateYesIf the current client version is multiple versions behind the server, it will update one by one based on the release dates of the versions. (Effective by default when the component is referenced)
Binary Differential UpdateYesGenerates patch files by comparing new and old versions using differential algorithms. (Effective by default when the component is referenced)
Incremental UpdateYesUpdates only the files that have changed compared to the previous version and deletes files that do not exist in the current version. (Effective by default when the component is referenced)
Forced UpdateYesForces an update directly after opening the client.
Multi-Branch UpdateYesSupports updating different content based on different branches of a product.
Latest Version PushYesImplemented based on Signal R to push the latest version.
Multi-LanguageYesCross-platform, language-agnostic; can serve as an update "script" for apps written in any language. GeneralUpdate.Tools UI supports Chinese/English toggle.
Skip UpdateYesSupports injecting a pop-up to let users decide whether to update this release; forced updates from the server side will override this.
Mutual UpgradeYesThe main program can update the upgrade program, and vice versa.
BlacklistYesSkips files and file extensions listed in the blacklist during the update process.
OSSYesSimplifies updates with an independent update mechanism. Only requires placing a version.json configuration file on the file server. The component will update and download based on the version information in the configuration file.
Rollback and BackupYesBacks up local client files before updating, and rolls back if the client fails to start or crashes.
Driver UpdateSupportedCross-platform driver auto-update implemented based on the GeneralUpdate.Drivelution component, supporting Windows and Linux platforms. Provides complete functions including driver validation, backup, rollback, signature verification, and permission management.
Extension ManagementSupportedVS Code-like extension system implemented based on the GeneralUpdate.Extension component, managing extension plugins such as Lua/Python. Supports extension directory management, remote query, download queue, version compatibility check, multi-platform support, dependency resolution, rollback mechanism, event notification, and other functions.
Custom Method ListYesInjects a collection of custom methods that execute before the update starts. If any exception occurs while executing the custom method list, it will be notified through exception subscription. (Recommended to check the current software environment before updating)
Multi-Protocol AuthYesSupports HMAC-SHA256, Bearer Token, API Key, and HTTP Basic authentication schemes with custom extension.
Silent UpdateYesBackground version polling, silent download, and upgrade triggered on process exit — fully transparent to the user.
Concurrent DownloadYesMulti-package concurrent downloads with resume support, SHA256 verification, and configurable concurrency.
File Tree DiffYesDirectory-level structural comparison between old and new versions, producing an incremental file manifest.
AOTYesSupports AOT compilation and publishing.

3. What does GeneralUpdate support?

.NET Framework
Framework NameSupported
.NET Core 2.0Yes
.NET 5 ... to the latest versionYes
.NET Framework 4.6.1Yes
UI Framework
UI Framework NameSupportedContributor
WPFYesJusterZhu
UWPNot updatable in store modelindexi
MAUICurrently supports only Android platformJusterZhu
AvaloniaYesJusterZhu
WinUIYesJusterZhu
ConsoleYesJusterZhu
WinFormsYesJusterZhu
Operating Systems
Operating System NameSupportedContributor
WindowsYesJusterZhu
LinuxYesJusterZhu
AndroidYesJusterZhu
Kylin V10 (Feiteng S2500)YesWei
Kylin V10 (Feiteng FT-2000)YesYao Shengwei
Kylin V10 (x64)YesWei
UbuntuYesJusterZhu
Huawei EulerOS (Kunpeng)YesYao Shengwei
Loongson (Loongnix LoongArch)YesAvalonia Chinese Community (Dong Bin Rabbitism)
Apple Mac (M1)YesJusterZhu
UOSYesJusterZhu

4. Repositories

NameDescriptionAddress
GeneralUpdateAutomatic UpdatesGitHub
Gitee
GitCode
GeneralUpdate.MauiMAUI Android Auto-UpdatesGitHub
Gitee
GitCode
GeneralUpdate.AvaloniaAvalonia Android Auto-UpdatesGitHub
GeneralUpdate.ToolsUpdate Patch Creation ToolGitHub
Gitee
GitCode
GeneralUpdate-SamplesUsage ExamplesGitHub
Gitee
GitCode

5. Unified Language

Before starting to use GeneralUpdate, we need to understand some basic concepts in the system. Please download the GeneralUpdate-Samples repository and navigate to the ..\GeneralUpdate-Samples\src directory for better understanding.

NameDescriptionExplanation
ClientThe client being updated.If you want to update QQ, then QQ is the Client.
UpgradeThe upgrade program is an independent process. It should be placed in the same directory as the Client and should not be associated with any business or design during use (or coding); it must remain independently referenced.QQ cannot update its own files during runtime, so the Upgrade handles this task.
PacketUpdate Patch PackageGamers often hear the concept of "patches," which are used to update vulnerabilities or content in a game. Similarly, here the update patch package contains files with content differences or new files from the old and new versions, and files that need to be deleted.
ServerServer ApplicationManages version update information, patch packages, and version verification. (In the Samples, only a simple example is provided and does not fulfill these functions; developers need to implement this themselves or purchase the GeneralSpacestation service).
GeneralUpdate.ToolsUpdate Patch Creation ToolA packaging tool provided by this open-source project for generating update patch packages (.zip file format).
Quick Start
Version Number Standards

GeneralUpdate follows Semantic Versioning core principles (MAJOR.MINOR.PATCH), extended with a fourth Revision segment (MAJOR.MINOR.PATCH.REVISION) for .NET System.Version compatibility.