Skip to content

Commit 6209323

Browse files
JusterZhuclaude
andauthored
docs: Component Intro update, contact page merge, PacketTool encrypt, cookbook notes (#102)
- Component Introduction: update feature table — Multi-Language verified, add Multi-Protocol Auth, Silent Update, Concurrent Download, File Tree Diff - Component Introduction: remove section 6 (merged into /contact page) - contact.js: enrich with QQ groups, GitHub Issues, paid consultation, corporate wall, and sponsorship sections - GeneralUpdate.PacketTool: add encrypted/packed file detection step to Patch section (zh+en) - Beginner cookbook: add encrypted/packed file diff limitation note under installation directory notes (zh+en) - GeneralSpacestation: remove Solutions/Screenshots sections, center logo, rename Canary Rollouts, add offline edition note (zh+en) Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 198521c commit 6209323

13 files changed

Lines changed: 165 additions & 195 deletions

File tree

website/docs/doc/Component Introduction.md

Lines changed: 5 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ GeneralUpdate is an open-source cross-platform application automatic update comp
2929
| Forced Update | Yes | Forces an update directly after opening the client. |
3030
| Multi-Branch Update | Yes | Supports updating different content based on different branches of a product. |
3131
| Latest Version Push | Yes | Implemented based on Signal R to push the latest version. |
32-
| Multi-Language | To be verified | Can also be written as a console program to act as an update "script" for applications in other languages. |
32+
| Multi-Language | Yes | Cross-platform, language-agnostic; can serve as an update "script" for apps written in any language. GeneralUpdate.Tools UI supports Chinese/English toggle. |
3333
| Skip Update | Yes | Supports injecting a pop-up to let users decide whether to update this release; forced updates from the server side will override this. |
3434
| Mutual Upgrade | Yes | The main program can update the upgrade program, and vice versa. |
3535
| Blacklist | Yes | Skips files and file extensions listed in the blacklist during the update process. |
@@ -38,6 +38,10 @@ GeneralUpdate is an open-source cross-platform application automatic update comp
3838
| Driver Update | Supported | Cross-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. |
3939
| Extension Management | Supported | VS 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. |
4040
| Custom Method List | Yes | Injects 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) |
41+
| Multi-Protocol Auth | Yes | Supports HMAC-SHA256, Bearer Token, API Key, and HTTP Basic authentication schemes with custom extension. |
42+
| Silent Update | Yes | Background version polling, silent download, and upgrade triggered on process exit — fully transparent to the user. |
43+
| Concurrent Download | Yes | Multi-package concurrent downloads with resume support, SHA256 verification, and configurable concurrency. |
44+
| File Tree Diff | Yes | Directory-level structural comparison between old and new versions, producing an incremental file manifest. |
4145
| AOT | Yes | Supports AOT compilation and publishing. |
4246
| Authentication | Supported | Identity authentication information (token) can be passed in HTTP requests for server resources. |
4347

@@ -121,37 +125,3 @@ GeneralUpdate follows [Semantic Versioning](https://semver.org/) core principles
121125

122126

123127

124-
## 6. Communication and Collaboration
125-
126-
In the free communication channels, questions from developers are answered periodically. All community donations will be used for the development and construction of open-source projects. Code contributors will be rewarded with donation funds.
127-
128-
- Free Q&A: https://github.com/GeneralLibrary/GeneralUpdate/issues
129-
- Free Technical Exchange: .NET Technical Exchange Group 341349660
130-
- Free Discussion on Open Source Project Usage: GeneralUpdate Discussion Group 748744489
131-
- E-Mail: zhuzhen723723@outlook.com
132-
- Due to the large number of individual communications, the author's time and energy are limited; one-on-one answers require paid consultation. Questions in discussion groups or issues are visible to everyone to avoid repetitive answers.
133-
- The open-source project needs to establish a corporate wall on the official website. If any companies are using this project in their projects and wish to be featured for free promotion, please contact the author.
134-
135-
##### Business Cooperation
136-
137-
For customized secondary development, technical consultation, and open-source project sponsorship, see the contact information for corporate inquiries, quotations, business cooperation, and corporate wall (please specify your purpose when adding, idle chats are refused, WeChat is recommended).
138-
139-
![](D:\github_project\GeneralUpdate-Samples\website\i18n\en\docusaurus-plugin-content-docs\current\docs\doc\imgs\contact.png)
140-
141-
##### Sponsorship
142-
143-
Dear Sponsors,
144-
145-
This project is an automatic update component primarily designed and maintained by the author. The goal of this project is to provide a platform for developers and tech enthusiasts worldwide to share, learn, and innovate. We are committed to advancing technology and the power of shared knowledge.
146-
147-
However, we need your support. Your sponsorship will enable us to further improve the quality of the project, add more features, and provide a better user experience. In return, we will display your company's logo on the project's website to express our gratitude.
148-
149-
This is a great opportunity not only to promote technological progress but also to enhance your brand awareness and community influence. We believe your sponsorship will have a profound impact on this open-source project. Additionally, all sponsorship funds will be used to purchase GeneralUpdate merchandise to reward community partners who contribute code to the project. If you have made significant contributions, please contact me via the email below to get in touch.
150-
151-
The scale of the project has exceeded the capacity of individual maintenance, and design and maintenance are not easy. We look forward to your active participation, so let's join hands to create the future!
152-
153-
Thank you!
154-
155-
Author: Juster Zhu
156-
157-
![Sponsorship](imgs/payment.jpg)

website/docs/doc/GeneralSpacestation.mdx

Lines changed: 8 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ sidebar_position: 1
55
import Tabs from '@theme/Tabs';
66
import TabItem from '@theme/TabItem';
77

8+
<div style={{textAlign: 'center'}}>
9+
10+
![](imgs/GeneralUpdate_h2.png)
11+
12+
</div>
13+
814
<iframe
915
src="//player.bilibili.com/player.html?bvid=BV12P9dBiEEh&page=1"
1016
width="100%"
@@ -14,8 +20,6 @@ import TabItem from '@theme/TabItem';
1420
scrolling="no"
1521
/>
1622

17-
![](imgs/GeneralUpdate_h2.png)
18-
1923
## 版本与价格
2024

2125
TSLH™ GeneralSpacestation 采用**年度付费模式**,购买或续费即可获得当年版本的永久授权。所有版本均提供部署指导与用户操作手册。
@@ -63,6 +67,7 @@ TSLH™ GeneralSpacestation 采用**年度付费模式**,购买或续费即可
6367
| 专属技术支持 | 1 个席位 |
6468
| Beta 版本优先 ||
6569
| 公共频道支持 ||
70+
| 离线版 | 可选 |
6671

6772
</TabItem>
6873
</Tabs>
@@ -99,7 +104,7 @@ TSLH™ GeneralSpacestation 是**客户端全生命周期升级管理服务**,
99104

100105
## 核心功能
101106

102-
### 智能分组灰度发布
107+
### 分组灰度发布
103108

104109
按区域、产品线、门店、试点客户灵活编组,精准控制更新范围,降低发布风险。支持**分组冻结**,被冻结的分组无法接收升级推送,用于误发补丁后的紧急阻止。
105110

@@ -153,24 +158,6 @@ TSLH™ GeneralSpacestation 是**客户端全生命周期升级管理服务**,
153158

154159
---
155160

156-
## 解决方案架构
157-
158-
![](imgs/solution2.png)
159-
160-
![](imgs/solution.png)
161-
162-
---
163-
164-
## 界面展示
165-
166-
![](imgs/generalspacestation.png)
167-
168-
![](imgs/generalspacestation2.png)
169-
170-
![](imgs/GeneralSpacestation_server.png)
171-
172-
---
173-
174161
## 可定制方案
175162

176163
除标准版本外,我们提供以下增值服务,满足企业个性化需求:

website/docs/quickstart/Beginner cookbook.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,10 @@ Client (新版本):
390390

391391
> **提示**:如果在更新时遇到"权限不足"或 UAC 弹窗,请检查应用是否安装在不推荐的目录中。将应用迁移到用户目录通常可以解决此问题。
392392
393+
### 关于加密文件与加壳程序
394+
395+
> **注意**:使用加壳工具(如 Themida、VMProtect)、代码混淆器或加密的二进制文件**无法进行二进制差分更新**。加壳/加密会导致整个文件在新旧版本间完全不同,差分算法失效,补丁包体积等同于全量文件。如需差分更新,请确保原始发布文件未被加壳或加密。
396+
393397
## 示例仓库
394398
| 仓库 | 地址 |
395399
| --- | --- |

website/docs/quickstart/GeneralUpdate.PacketTool.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,14 @@ dotnet run --project GeneralUpdate.Tools.csproj
5959

6060
### 工具内部做了什么
6161

62-
1. 校验 old/new 目录存在、version 格式合法。
63-
2. 创建临时目录 `gupatch_yyyyMMddHHmmss`
64-
3. 递归比较 old/new:**修改文件** → 生成 `.patch` 二进制差分;**新增文件** → 直接复制;**删除文件** → 记录 hash 到 `generalupdate.delete.json`
65-
4. 将临时目录压缩为 `{PackageName}.zip`
66-
5. 删除临时目录,ZIP 保留在 Output Directory。
62+
1. **加密文件检测**:扫描 old/new 目录中的二进制文件,检测是否存在加壳(如 Themida、VMProtect)或加密签名。被检测到的文件将标记警告——此类文件无法生成有效差分补丁,将以全量文件形式打包。
63+
2. 校验 old/new 目录存在、version 格式合法。
64+
3. 创建临时目录 `gupatch_yyyyMMddHHmmss`
65+
4. 递归比较 old/new:**修改文件** → 生成 `.patch` 二进制差分;**新增文件** → 直接复制;**删除文件** → 记录 hash 到 `generalupdate.delete.json`
66+
5. 将临时目录压缩为 `{PackageName}.zip`
67+
6. 删除临时目录,ZIP 保留在 Output Directory。
68+
69+
> **关于加密文件**:加壳工具(Themida、VMProtect 等)、代码混淆或加密的二进制文件,因文件哈希在新旧版本间完全不同,差分算法对其无效。此类文件检测到后将直接以全量形式打包,而不会生成 `.patch` 差分。建议在发布前对原始文件进行去壳/解密处理,以获得最优的补丁体积。
6770
6871
底层调用的是 `GeneralUpdate.Core.Pipeline.DiffPipeline.CleanAsync(oldDir, newDir, patchDir)`,和你的 CI 脚本走的是同一条代码路径。
6972

website/i18n/en/docusaurus-plugin-content-docs/current/doc/Component Introduction.md

Lines changed: 5 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ GeneralUpdate is an open-source cross-platform application automatic update comp
3131
| Forced Update | Yes | Forces an update directly after opening the client. |
3232
| Multi-Branch Update | Yes | Supports updating different content based on different branches of a product. |
3333
| Latest Version Push | Yes | Implemented based on Signal R to push the latest version. |
34-
| Multi-Language | To be verified | Can also be written as a console program to act as an update "script" for applications in other languages. |
34+
| Multi-Language | Yes | Cross-platform, language-agnostic; can serve as an update "script" for apps written in any language. GeneralUpdate.Tools UI supports Chinese/English toggle. |
3535
| Skip Update | Yes | Supports injecting a pop-up to let users decide whether to update this release; forced updates from the server side will override this. |
3636
| Mutual Upgrade | Yes | The main program can update the upgrade program, and vice versa. |
3737
| Blacklist | Yes | Skips files and file extensions listed in the blacklist during the update process. |
@@ -40,6 +40,10 @@ GeneralUpdate is an open-source cross-platform application automatic update comp
4040
| Driver Update | Supported | Cross-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. |
4141
| Extension Management | Supported | VS 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. |
4242
| Custom Method List | Yes | Injects 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) |
43+
| Multi-Protocol Auth | Yes | Supports HMAC-SHA256, Bearer Token, API Key, and HTTP Basic authentication schemes with custom extension. |
44+
| Silent Update | Yes | Background version polling, silent download, and upgrade triggered on process exit — fully transparent to the user. |
45+
| Concurrent Download | Yes | Multi-package concurrent downloads with resume support, SHA256 verification, and configurable concurrency. |
46+
| File Tree Diff | Yes | Directory-level structural comparison between old and new versions, producing an incremental file manifest. |
4347
| AOT | Yes | Supports AOT compilation and publishing. |
4448

4549
## 3. What does GeneralUpdate support?
@@ -122,37 +126,3 @@ GeneralUpdate follows [Semantic Versioning](https://semver.org/) core principles
122126

123127

124128

125-
## 6. Communication and Collaboration
126-
127-
In the free communication channels, questions from developers are answered periodically. All community donations will be used for the development and construction of open-source projects. Code contributors will be rewarded with donation funds.
128-
129-
- Free Q&A: https://github.com/GeneralLibrary/GeneralUpdate/issues
130-
- Free Technical Exchange: .NET Technical Exchange Group 341349660
131-
- Free Discussion on Open Source Project Usage: GeneralUpdate Discussion Group 748744489
132-
- E-Mail: zhuzhen723723@outlook.com
133-
- Due to the large number of individual communications, the author's time and energy are limited; one-on-one answers require paid consultation. Questions in discussion groups or issues are visible to everyone to avoid repetitive answers.
134-
- The open-source project needs to establish a corporate wall on the official website. If any companies are using this project in their projects and wish to be featured for free promotion, please contact the author.
135-
136-
##### Business Cooperation
137-
138-
For customized secondary development, technical consultation, and open-source project sponsorship, see the contact information for corporate inquiries, quotations, business cooperation, and corporate wall (please specify your purpose when adding, idle chats are refused, WeChat is recommended).
139-
140-
![](imgs\contact.png)
141-
142-
##### Sponsorship
143-
144-
Dear Sponsors,
145-
146-
This project is an automatic update component primarily designed and maintained by the author. The goal of this project is to provide a platform for developers and tech enthusiasts worldwide to share, learn, and innovate. We are committed to advancing technology and the power of shared knowledge.
147-
148-
However, we need your support. Your sponsorship will enable us to further improve the quality of the project, add more features, and provide a better user experience. In return, we will display your company's logo on the project's website to express our gratitude.
149-
150-
This is a great opportunity not only to promote technological progress but also to enhance your brand awareness and community influence. We believe your sponsorship will have a profound impact on this open-source project. Additionally, all sponsorship funds will be used to purchase GeneralUpdate merchandise to reward community partners who contribute code to the project. If you have made significant contributions, please contact me via the email below to get in touch.
151-
152-
The scale of the project has exceeded the capacity of individual maintenance, and design and maintenance are not easy. We look forward to your active participation, so let's join hands to create the future!
153-
154-
Thank you!
155-
156-
Author: Juster Zhu
157-
158-
![Sponsorship](imgs/payment.jpg)

website/i18n/en/docusaurus-plugin-content-docs/current/doc/GeneralSpacestation.mdx

Lines changed: 8 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ sidebar_position: 1
55
import Tabs from '@theme/Tabs';
66
import TabItem from '@theme/TabItem';
77

8+
<div style={{textAlign: 'center'}}>
9+
10+
![](imgs/GeneralUpdate_h2.png)
11+
12+
</div>
13+
814
<iframe
915
src="//player.bilibili.com/player.html?bvid=BV12P9dBiEEh&page=1"
1016
width="100%"
@@ -14,8 +20,6 @@ import TabItem from '@theme/TabItem';
1420
scrolling="no"
1521
/>
1622

17-
![](imgs/GeneralUpdate_h2.png)
18-
1923
## Pricing
2024

2125
TSLH™ GeneralSpacestation uses an **annual subscription model**. Purchase or renewal grants a perpetual license for the current version. All editions include deployment guidance and user documentation.
@@ -63,6 +67,7 @@ TSLH™ GeneralSpacestation uses an **annual subscription model**. Purchase or r
6367
| Dedicated support | 1 seat |
6468
| Beta access ||
6569
| Public channel ||
70+
| Offline | Optional |
6671

6772
</TabItem>
6873
</Tabs>
@@ -99,7 +104,7 @@ TSLH™ GeneralSpacestation is an **enterprise client lifecycle upgrade manageme
99104

100105
## Features
101106

102-
### Smart Canary Rollouts
107+
### Canary Rollouts
103108

104109
Flexibly group clients by region, product line, store, or pilot customer. Precisely control update scope to minimize release risk. **Group freeze** support allows emergency blocking of upgrades to frozen groups after an accidental patch.
105110

@@ -153,24 +158,6 @@ Chinese/English UI toggle, light/dark dual themes, collapsible menu for maximize
153158

154159
---
155160

156-
## Solution Architecture
157-
158-
![](imgs/solution2.png)
159-
160-
![](imgs/solution.png)
161-
162-
---
163-
164-
## Screenshots
165-
166-
![](imgs/generalspacestation.png)
167-
168-
![](imgs/generalspacestation2.png)
169-
170-
![](imgs/GeneralSpacestation_server.png)
171-
172-
---
173-
174161
## Custom Solutions
175162

176163
Beyond standard editions, we offer value-added services for enterprise needs:

website/i18n/en/docusaurus-plugin-content-docs/current/quickstart/Beginner cookbook.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,10 @@ The update process requires read/write access to the application directory. To a
392392

393393
> **Tip**: If you encounter "Access Denied" or UAC prompts during updates, check whether the application is installed in a non-recommended directory. Moving the application to a user directory usually resolves the issue.
394394
395+
### Encrypted Files and Packed Executables
396+
397+
> **Note**: Packed executables (e.g. Themida, VMProtect), obfuscated code, or encrypted binaries **cannot benefit from binary differential updates**. Packing/encryption causes the entire file to differ between versions, making diff algorithms ineffective — the patch will be the same size as a full file replacement. For differential updates, ensure your published binaries are neither packed nor encrypted.
398+
395399
## Sample repositories
396400
| Repository | URL |
397401
| --- | --- |

0 commit comments

Comments
 (0)