diff --git a/website/docs/doc/Component Introduction.md b/website/docs/doc/Component Introduction.md index b24395b..005a5f2 100644 --- a/website/docs/doc/Component Introduction.md +++ b/website/docs/doc/Component Introduction.md @@ -6,18 +6,18 @@ sidebar_position: 2 ![](imgs\GeneralUpdate_h2.png) -### 1.GeneralUpdate是什么? +### 1. What is GeneralUpdate? -GeneralUpdate是一款基于.NET Standard2.0开源多平台自动升级组件。一个小小star是您对我最大的支持,让我们保持更新维护的动力。 +GeneralUpdate is an open-source, cross-platform automatic update component based on .NET Standard 2.0. A small star is your greatest support, motivating us to keep updating and maintaining. -##### 本项目开源仓库地址 +##### Project Open Source Repository Address - https://github.com/GeneralLibrary/GeneralUpdate - https://gitee.com/GeneralLibrary/GeneralUpdate -##### 相关开源项目仓库地址 +##### Related Open Source Project Repository Addresses -当前项目GeneralUpdate +Current Project GeneralUpdate - https://github.com/GeneralLibrary/GeneralUpdate - https://gitee.com/GeneralLibrary/GeneralUpdate @@ -26,39 +26,38 @@ MAUI GeneralUpdate.Maui - https://github.com/GeneralLibrary/GeneralUpdate.Maui -打包工具项目地址GeneralUpdate.Tools +Packaging Tool Project Address GeneralUpdate.Tools - https://github.com/GeneralLibrary/GeneralUpdate.Tools - https://gitee.com/GeneralLibrary/GeneralUpdate.Tools -示例项目地址GeneralUpdate-Samples +Sample Project Address GeneralUpdate-Samples - https://github.com/GeneralLibrary/GeneralUpdate-Samples - - https://gitee.com/GeneralLibrary/GeneralUpdate-Samples -##### 帮助文档 ##### +##### Help Documentation ##### -- 讲解视频: https://www.bilibili.com/video/BV1aX4y137dd -- 官方网站: https://www.justerzhu.cn/ -- 快速启动: https://mp.weixin.qq.com/s/pRKPFe3eC0NSqv9ixXEiTg -- 使用教程视频:https://www.bilibili.com/video/BV1FT4y1Y7hV -- 帮助文档&官方网站源码仓库:https://github.com/GeneralLibrary/GeneralUpdate-Samples/tree/main/website/doc +- Video Tutorial: https://www.bilibili.com/video/BV1aX4y137dd +- Official Website: https://www.justerzhu.cn/ +- Quick Start: https://mp.weixin.qq.com/s/pRKPFe3eC0NSqv9ixXEiTg +- Usage Tutorial Video: https://www.bilibili.com/video/BV1FT4y1Y7hV +- Help Documentation & Official Website Source Repository: https://github.com/GeneralLibrary/GeneralUpdate-Samples/tree/main/website/doc -##### 沟通交流 +##### Communication and Exchange -本开源项目目前遵循MIT开源协议开源,可免费用于商用。在免费沟通渠道会不定期回答各位开发者的 问题。所有的社区捐赠将用于开源项目的发展建设。代码贡献者将会用捐赠资金进行奖励。 +This open-source project currently follows the MIT open-source license and can be used for commercial purposes for free. Free communication channels will periodically address developers' questions. All community donations will be used for the development and construction of open-source projects. Code contributors will be rewarded with donation funds. -- 免费问题解答: https://github.com/GeneralLibrary/GeneralUpdate/issues -- 免费技术交流: .NET技术交流群 341349660 -- 开源项目使用讨论:GeneralUpdate交流群 748744489 -- 关于开源项目一对一问答需付费咨询。 +- Free Q&A: https://github.com/GeneralLibrary/GeneralUpdate/issues +- Free Technical Exchange: .NET Technology Exchange Group 341349660 +- Open Source Project Usage Discussion: GeneralUpdate Exchange Group 748744489 +- One-on-one Q&A for open-source projects requires paid consultation. -### 商务合作 +### Business Cooperation -定制化二次开发,技术咨询,开源项目打赏以下是企业咨询、报价、商务合作联系方式(加好友请注明来意拒绝闲聊,推荐加微信)。 +Customized secondary development, technical consultation, open-source project rewards. Below are the contact details for enterprise inquiries, quotations, and business cooperation (please indicate your purpose when adding as a friend, casual chat is declined, adding on WeChat is recommended). ![](imgs\contact.png) @@ -66,118 +65,114 @@ MAUI GeneralUpdate.Maui -### 2.统一语言(Unifying Language) - -在开始使用GeneralUpdate之前我们需要先知道体系中的一些基础概念。 - -​ ![](imgs/client_server_upgrade.jpg) - -- Client:是指你的主应用程序,是被更新的客户端。也可理解为是公司的产品。 -- Upgrade:是指升级程序,它将是一个独立的进程。需要和Client放在同一级目录下,在使用(或编码) 的过程中不可以和任何业务或设计关联、必须保持独立引用。 -- Server:是指服务端应用(ASP.NET)将提供版本更新信息交互、版本验证功能。 -- GeneralUpdate.Tool:是本开源项目提供的打包工具,用于生成更新包(7z和zip)。 -- UpdatePacket:顾名思义就是更新包,更新包里的内容都是新旧版本中具有文件内容差异补丁 (.pacth)或新增文件。 -- SQL : 目前sql脚本是基于Mysql数据库生成 +### 2. Unifying Language +Before using GeneralUpdate, we need to understand some basic concepts in the system. +![](imgs/client_server_upgrade.jpg) -#### 版本号执行标准 +- Client: Refers to your main application, which is the client to be updated. It can also be understood as the company's product. +- Upgrade: Refers to the upgrade program, which will be an independent process. It needs to be placed in the same directory as the Client and should not be associated with any business or design during use (or coding), maintaining independent reference. +- Server: Refers to the server application (ASP.NET) that will provide version update information interaction and version verification functions. +- GeneralUpdate.Tool: Is the packaging tool provided by this open-source project, used to generate update packages (7z and zip). +- UpdatePacket: As the name suggests, it is an update package. The contents of the update package are patch files (.patch) or new files with content differences between the new and old versions. +- SQL: Currently, SQL scripts are generated based on the MySQL database. -- Nuget版本管理参考标准:https://docs.microsoft.com/zh-cn/nuget/concepts/package-versioning -- 应用程序集版本管理参考标准:https://docs.microsoft.com/zh-cn/dotnet/standard/assembly/versioning (被组件更新的客户端程序,说通俗点就是你公司的产品;组件的操作将按照这个标准执行。) -- 每次迭代除了更新AssemblyInfo中的版本号,还需要修改DLL文件的版本号。 +#### Version Number Execution Standards -### 3.GeneralUpdate提供什么? +- Nuget Version Management Reference Standard: https://docs.microsoft.com/zh-cn/nuget/concepts/package-versioning +- Application Assembly Version Management Reference Standard: https://docs.microsoft.com/zh-cn/dotnet/standard/assembly/versioning (The client program updated by the component, in simple terms, is your company's product; the component's operation will be executed according to this standard.) +- In each iteration, besides updating the version number in AssemblyInfo, the version number of the DLL file also needs to be modified. -##### 组件功能 -| 功能 | 是否支持 | 备注 | -| -------------- | -------- | ------------------------------------------------------------ | -| 断点续传 | 支持 | 单次更新失败时,下次一次启动时继续上一次更新下载更新包内容。(引用组件默认生效) | -| 逐版本更新 | 支持 | 客户端当前版本如果与服务器相差多个版本,则根据多个版本的发布日期逐个更新。(引用组件默认生效) | -| 二进制差分更新 | 支持 | 对比新老版本通过差分算法生成补丁文件。(引用组件默认生效) | -| 增量更新功能 | 支持 | 相比上一个版本只更新当前修改过的文件,并且删除当前版本不存在的文件。(引用组件默认生效) | -| 强制更新 | 支持 | 打开客户端之后直接强制更新。 | -| 多分支更新 | 支持 | 当一个产品有多个分支时,需要根据不同的分支更新对应的内容。 | -| 最新版本推送 | 支持 | 基于Signal R实现,推送当前最新版本。 | -| 多语言 | 待验证 | 也可将本组件编写为控制台程序,作为更新“脚本”。更新其他语言的应用程序。 | -| 跳过更新 | 支持 | 支持注入弹窗让用户决定是否更新本次发布,服务端决定强制时更新不生效。 | -| 相互升级 | 支持 | 主程序可更新升级程序,升级程序可更新主程序。 | -| 黑名单 | 支持 | 在更新过程中会跳过黑名单中的文件列表和文件扩展名列表。 | -| OSS | 支持 | 极简化更新,是一套独立的更新机制。只需要在文件服务器中放置version.json的版本配置文件。组件会根据配置文件中的版本信息进行更新下载。 | -| 回滚、备份 | 支持 | 更新之前会将客户端本地文件备份,如果客户端启动失败或崩溃则回滚覆盖。 | -| 驱动更新 | 待验证 | 更新之前会将驱动备份到本地,如果客户端启动失败或崩溃则回滚覆盖。 | -| 自定义方法列表 | 支持 | 注入一个自定义方法集合,该集合会在更新启动前执行。执行自定义方法列表如果出现任何异常,将通过异常订阅通知。(推荐在更新之前检查当前软件环境) | -| AOT | 支持 | 支持AOT编译发布。 | +### 3. What does GeneralUpdate provide? +##### Component Functions -##### 打包工具 +| Function | Supported | Remarks | +| -------------------------- | -------------- | ------------------------------------------------------------ | +| Resume Download | Yes | When a single update fails, continue with the previous update download content on the next startup. (Enabled by default when referencing the component) | +| Incremental Update | Yes | Update only the currently modified files compared to the previous version, and delete the files that do not exist in the current version. (Enabled by default when referencing the component) | +| Binary Differential Update | Yes | Generate patch files by comparing new and old versions using differential algorithms. (Enabled by default when referencing the component) | +| Incremental Update | Yes | Update only the currently modified files compared to the previous version, and delete the files that do not exist in the current version. (Enabled by default when referencing the component) | +| Forced Update | Yes | Directly force an update after opening the client. | +| Multi-branch Update | Yes | When a product has multiple branches, update the corresponding content based on different branches. | +| Latest Version Push | Yes | Implemented based on Signal R, push the current latest version. | +| Multi-language | To be verified | The component can also be written as a console program, serving as an update "script" for applications in other languages. | +| Skip Update | Yes | Support injecting pop-ups to let users decide whether to update this release, with the server deciding that forced updates are not effective. | +| Mutual Upgrade | Yes | The main program can update the upgrade program, and the upgrade program can update the main program. | +| Blacklist | Yes | During updates, files and file extensions in the blacklist will be skipped. | +| OSS | Yes | Simplified update, an independent update mechanism. Just place the version configuration file version.json on the file server. The component will update and download based on the version information in the configuration file. | +| Rollback, Backup | Yes | Before updating, local files on the client will be backed up. If the client fails to start or crashes, it will roll back and overwrite. | +| Driver Update | To be verified | Before updating, drivers will be backed up locally. If the client fails to start or crashes, it will roll back and overwrite. | +| Custom Method List | Yes | Inject a custom method collection that will be executed before the update starts. If any exceptions occur during the execution of the custom method list, they will be notified through exception subscription. (Recommended to check the current software environment before updating) | +| AOT | Yes | Support AOT compilation and release. | -GeneralUpdate.PacketTool使用.NET 8编写的桌面端打包程序。https://github.com/GeneralLibrary/GeneralUpdate.Tools -| 功能 | 支持 | 备注 | -| ------------------ | ------ | ------------------------------------------------------------ | -| 差分更新包生成 | 是 | 根据上一个版本和当前版本进行对比找出需要更新的文件或新添加文件。 | -| 自动上传更新包 | 开发中 | 将生成好的差分更新包自动上传至服务器。 | -| 可编辑选择差分文件 | 开发中 | 可视化查看差分包的打包内容,并可选择打包文件。 | +##### Packaging Tool +GeneralUpdate.PacketTool is a desktop packaging program written in .NET 8. https://github.com/GeneralLibrary/GeneralUpdate.Tools -### 5.GeneralUpdate支持什么? +| Function | Supported | Remarks | +| ---------------------------------------- | -------------- | ------------------------------------------------------------ | +| Differential Update Package Generation | Yes | Compare the previous version and the current version to find the files that need to be updated or newly added files. | +| Automatic Upload of Update Packages | In development | Automatically upload the generated differential update packages to the server. | +| Editable Selection of Differential Files | In development | Visualize the packaging content of the differential package and select packaging files. | -##### .NET框架 -| 框架名称 | 是否支持 | -| -------------------------- | -------- | -| .NET Core 2.0 | 支持 | -| .NET 5 ... to last version | 支持 | -| .NET Framework 4.6.1 | 支持 | -##### UI框架 +### 5. What does GeneralUpdate support? -| UI框架名称 | 是否支持 | -| ---------- | --------------------- | -| WPF | 支持 | -| UWP | 商店模式下不可更新 | -| MAUI | 目前仅支持Android平台 | -| Avalonia | 支持 | -| WinUI | 支持 | -| Console | 支持 | -| WinForms | 支持 | +##### .NET Framework -##### 操作系统 +| Framework Name | Supported | +| -------------------------------- | --------- | +| .NET Core 2.0 | Yes | +| .NET 5 ... to the latest version | Yes | +| .NET Framework 4.6.1 | Yes | -| 操作系统名称 | 是否支持 | -| ------------------ | -------- | -| Windows | 支持 | -| Linux | 支持 | -| Android | 支持 | -| 麒麟V10(飞腾S2500) | 支持 | -| 麒麟V10(x64) | 支持 | -| Ubuntu | 支持 | -| 龙芯(Loongnix) | 待验证 | +##### UI Framework +| UI Framework Name | Supported | +| ----------------- | ---------------------------------------- | +| WPF | Yes | +| UWP | Cannot update in store mode | +| MAUI | Currently only supports Android platform | +| Avalonia | Yes | +| WinUI | Yes | +| Console | Yes | +| WinForms | Yes | +##### Operating System -### 赞助一下 +| Operating System Name | Supported | +| ------------------------- | -------------- | +| Windows | Yes | +| Linux | Yes | +| Android | Yes | +| Kirin V10 (Phytium S2500) | Yes | +| Kirin V10 (x64) | Yes | +| Ubuntu | Yes | +| Loongson (Loongnix) | To be verified | -尊敬的赞助者: -该项目以作者为主力设计、维护的自动升级组件。这个项目的目标是为全球的开发者和技术爱好者提供一个共享、学习和创新的平台,我们致力于推动技术的发展和共享知识的力量。 -但是,我们需要您的支持。您的赞助将使我们能够进一步提高项目的质量,增加更多的功能,提供更好的用户体验。而且,作为回报,我们会在项目网站上展示您的公司标志,以表达我们对您的感激之情。 +### Support Us -这是一个绝佳的机会,不仅可以推动技术的进步,也可以提高您的品牌知名度和社区影响力。我们相信,您的赞助将会对这个开源项目产生深远的影响。此外所有的赞助将用于购买GeneralUpdate实物周边产品奖励给项目贡献代码的社区伙伴,如果有实际贡献的小伙伴可以联系下方邮箱与我取得联系。 +Dear Sponsors, -目前项目的大小已经超出个人维护的精力范围之外设计维护实属不易,期待您的积极参与,让我们携手共创未来! +This project is an automatic update component designed and maintained primarily by the author. The goal of this project is to provide a platform for sharing, learning, and innovation for developers and technology enthusiasts worldwide. We are committed to promoting technological development and the power of shared knowledge. -谢谢! +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. Additionally, as a token of appreciation, we will display your company logo on the project website. -​ 作者:Juster Zhu +This is a great opportunity to not only drive technological advancement but also to enhance your brand's visibility and community influence. We believe your sponsorship will have a profound impact on this open-source project. Furthermore, all sponsorships will be used to purchase GeneralUpdate merchandise to reward community partners who contribute code to the project. If you have made an actual contribution, please contact me via the email below. +The size of the project has exceeded the scope of individual maintenance, and designing and maintaining it is not easy. We look forward to your active participation in creating a better future together! +Thank you! -![打赏](imgs/payment.jpg) \ No newline at end of file +​ Author: Juster \ No newline at end of file diff --git a/website/docs/doc/GeneralClient.OSS.md b/website/docs/doc/GeneralClient.OSS.md index 4d5ee33..596c2bf 100644 --- a/website/docs/doc/GeneralClient.OSS.md +++ b/website/docs/doc/GeneralClient.OSS.md @@ -2,29 +2,29 @@ sidebar_position: 9 --- -### 定义 +### Definition -命名空间:GeneralUpdate.ClientCore +Namespace: GeneralUpdate.ClientCore -程序集:GeneralUpdate.ClientCore.dll +Assembly: GeneralUpdate.ClientCore.dll **OSS** -OSS的全称是对象存储服务(Object Storage Service),做服务端技术栈开发的小伙伴肯定对这个不陌生在 各大云服务器厂商都会提供类似的服务,说简单点就是一个文件服务器。例如:阿里云OSS、腾讯云COS、华 为云OBS,其实它们只是名字不一样功能服务都差不多。然后本更新组件新功能的实现思路非常相似那么就 选择了OSS来为该功能命名,而且方便开发者一眼能get到这个功能的作用(需要使用组件 GeneralUpdate.ClientCore、GeneralUpdate.Core)。 +OSS stands for Object Storage Service. For those developing server-side technology stacks, this term is likely familiar, as major cloud service providers offer similar services. Simply put, it's a file server. Examples include Alibaba Cloud OSS, Tencent Cloud COS, and Huawei Cloud OBS. While they have different names, their functionalities are quite similar. The new feature of this update component is implemented in a very similar manner, so we chose OSS to name this feature, making it easy for developers to quickly understand its purpose (requires the use of components GeneralUpdate.ClientCore, GeneralUpdate.Core). **GeneralClientOSS** -GeneralClientOSS类是另外一种更新机制与GeneralClientBootstrap不同的是,GeneralClientOSS不需要编写服务端的代码直接根据OSS文件服务器的version.josn的版本信息进行更新,简化了新手使用本组件的门槛。 +The GeneralClientOSS class is another update mechanism. Unlike GeneralClientBootstrap, GeneralClientOSS does not require writing server-side code and directly updates based on the version information from the version.json file on the OSS file server, simplifying the threshold for beginners using this component. ```c# public sealed class GeneralClientOSS ``` -nuget安装 +NuGet Installation ```shell NuGet\Install-Package GeneralUpdate.ClientCore -Version 3.0.0 @@ -32,29 +32,29 @@ NuGet\Install-Package GeneralUpdate.ClientCore -Version 3.0.0 -### 示例 +### Example -#### OSS流程 +#### OSS Process ![](imgs/oss_flow.png) -1.准备version.json版本信息配置文件,更新文件(update.zip)更新文件和之前的打包方式一样。 +1. Prepare the version.json configuration file and update files (update.zip) just like in previous packaging methods. ![](imgs/oss_version_json.png) -2.Client启动时直接请求OSS服务器或文件服务器,下载version.json文件。 +2. When the Client starts, it directly requests the OSS server or file server to download the version.json file. ![](imgs/oss_util.png) -3.下载到本地之后解析版本信息内容判断是否需要更新,如果将信息通过进程启动传递Upgrade(Client自我 关闭)。 +3. After downloading to the local system, it parses the version information to determine if an update is needed. If so, it passes the information to Upgrade through a process launch (Client self-closes). -4.Upgrade启动之后直接去下载update.zip,下载到本地之后直接解压覆盖本地文件。 +4. After Upgrade starts, it directly downloads update.zip and extracts it locally to overwrite the local files. -5.Upgrade更新完成之后把Client启动起来,自我关闭。更新结束。 GeneralUpdateOSS的功能和GeneralUpdateBootstrap功能对比来说,使用的门槛非常低如果公司对自动 更新的要求不高的话可以使用这个功能。一句话概括这个功能就是下载version.json根据文件里的内容去逐 版本下载更新包,下载下来之后直接解压更新就结束了。 +5. After the Upgrade completes, it starts the Client and self-closes. The update ends. Compared to the GeneralUpdateBootstrap function, the GeneralUpdateOSS function has a very low usage threshold. If the company does not have high requirements for automatic updates, this feature can be used. In summary, this function downloads the version.json and updates based on the content in the file, downloading each version's update package and extracting it to complete the update. -以下示例定义方法,包含GeneralClientOSS使用方法。 +The following example defines methods, including the usage of GeneralClientOSS. ```c# Task.Run(async () => @@ -72,46 +72,46 @@ Task.Run(async () => -### 注解 +### Annotation -GeneralUpdateOSS提供以下能力。 +GeneralUpdateOSS provides the following capabilities. -#### 属性 +#### Properties -| Properties | | -| ---------- | ----------------- | -| ParamsOSS | OSS更新配置参数。 | +| Properties | Description | +| ---------- | ------------------------------------ | +| ParamsOSS | OSS update configuration parameters. | -#### 方法 +#### Methods -| Method | | -| ---------------------- | ---------------------- | -| Start() | 启动OSS更新。 | -| AddListenerException() | 监听组件内部异常信息。 | +| Method | Description | +| ---------------------- | ----------------------------------------------------------- | +| Start() | Start the OSS update. | +| AddListenerException() | Listen for internal exception information of the component. | ### 🌴ParamsOSS -**属性** +**Properties** -**Url** string http的api服务端请求地址。 +**Url** string: HTTP API server request address. -**AppName** string 应用名称。 +**AppName** string: Application name. -**CurrentVersion** string 当前版本。 +**CurrentVersion** string: Current version. -**VersionFileName** string 版本文件名称。 +**VersionFileName** string: Version file name. ### 🌼Start() -**方法** +**Method** -启动OSS更新。 +Start the OSS update. ```c# public static async Task Start(ParamsOSS configParams, string upgradeAppName = "GeneralUpdate.Upgrade"); @@ -119,25 +119,25 @@ public static async Task Start(ParamsOSS configParams, string upgradeAppName = " -**参数类型** +**Parameter Types** -ParamsOSS 更新配置参数,详细内容参考本文档🌴ParamsOSS。 +ParamsOSS: Update configuration parameters, detailed content can be found in this document under 🌴ParamsOSS. -**参数** +**Parameters** -**parameter** ParamsOSS 安卓平台的跟新配置参数。 +**parameter** ParamsOSS: Update configuration parameters for the Android platform. -**upgradeAppName** 需要升级的应用名称。 +**upgradeAppName**: Name of the application to be upgraded. -### 适用于 +### Applicable to -| 产品 | 版本 | +| Product | Version | | -------------- | ------------- | -| .NET | 5、6、7、8、9 | +| .NET | 5, 6, 7, 8, 9 | | .NET Framework | 4.6.1 | | .NET Standard | 2.0 | | .NET Core | 2.0 | \ No newline at end of file diff --git a/website/docs/doc/GeneralSpacestation.md b/website/docs/doc/GeneralSpacestation.md index 32ca1a6..36b274e 100644 --- a/website/docs/doc/GeneralSpacestation.md +++ b/website/docs/doc/GeneralSpacestation.md @@ -4,64 +4,64 @@ sidebar_position: 1 ![](imgs\GeneralUpdate_h2.png) -## 产品介绍 +## Product Introduction -GeneralLibrary团队针对企业级应用开发了GeneralSpacestation服务,解决对于自动升级管理方面的问题。整套系统所涉及到的所有组件内容均为自研、MIT或商用友好的开源组件,严格规避商用法律风险。 +The GeneralLibrary team has developed the GeneralSpacestation service for enterprise applications, addressing issues related to automatic update management. All components involved in the entire system are self-developed, MIT-licensed, or open-source components friendly for commercial use, strictly avoiding legal risks in commercial use. -整套服务包含了以下内容: +The entire service includes the following: -| 名称 | 介绍 | 是否收费 | 详情 | -| -------------------- | ------------------------------ | --------- | ------------------------------------------------------- | -| GeneralUpdate | 桌面客户端自动升级解决方案 | 免费 | https://github.com/GeneralLibrary/GeneralUpdate | -| GeneralUpdate-Sample | 使用代码示例 | 免费 | https://github.com/GeneralLibrary/GeneralUpdate-Samples | -| GeneralUpdate.Admin | 自动升级管理服务可视化解决方案 | 收费 | https://www.justerzhu.cn/ | -| GeneralSpacestation | 自动升级管理服务解决方案 | 收费 | https://www.justerzhu.cn/ | -| 线上\下培训会议 | 帮助企业快速上手使用产品 | 附赠\收费 | 扫码咨询\可单独购买 | -| 使用手册 | 帮助企业快速上手使用产品 | 附赠\收费 | 扫码咨询\可单独购买 | -| 项目对接\咨询 | 帮助企业快速上手使用产品 | 附赠\收费 | 扫码咨询\可单独购买 | +| Name | Description | Cost | Details | +| -------------------------------- | ------------------------------------------------------ | ------------------ | ---------------------------------------------------------- | +| GeneralUpdate | Desktop client automatic update solution | Free | https://github.com/GeneralLibrary/GeneralUpdate | +| GeneralUpdate-Sample | Sample usage code | Free | https://github.com/GeneralLibrary/GeneralUpdate-Samples | +| GeneralUpdate.Admin | Visual solution for automatic update management | Paid | https://www.justerzhu.cn/ | +| GeneralSpacestation | Solution for automatic update management | Paid | https://www.justerzhu.cn/ | +| Online/Offline Training Sessions | Helps enterprises quickly get started with the product | Complimentary/Paid | Scan the code for consultation/can be purchased separately | +| User Manual | Helps enterprises quickly get started with the product | Complimentary/Paid | Scan the code for consultation/can be purchased separately | +| Project Integration/Consultation | Helps enterprises quickly get started with the product | Complimentary/Paid | Scan the code for consultation/can be purchased separately | -## 功能 +## Features -### Tools 模块展示 +### Tools Module Display ![](imgs\generalspacestation.png) -### Upgrade 模块展示 +### Upgrade Module Display ![](imgs\generalspacestation2.png) -## 解决方案 +## Solution ![](imgs\solution2.png) ![](imgs\solution.png) -介绍部分所涉及到的技术(包括但不限于 操作系统 \ 框架 \ 语言 \ 开源组件 等内容): +Technologies involved in the introduction (including but not limited to operating systems, frameworks, languages, open-source components, etc.): -| 技术 | 备注 | 详情 | -| -------------- | --------------------------------------------------- | ------------------------------------------------------------ | -| .NET Core 9 | 微软公司旗下最新免费开源框架(MIT License) | https://dotnet.microsoft.com/zh-cn/download/dotnet/9.0 | -| C#13 | 微软公司旗下最新版本开源开发语言之一(MIT License) | https://dotnet.microsoft.com/zh-cn/languages/csharp | -| Aavalonia | Aavalonia团队的跨平台开源UI框架(MIT License) | https://avaloniaui.net/ | -| Prism.Avalonia | PrismLibrary团队项目结构框架(MIT License) | https://github.com/AvaloniaCommunity/Prism.Avalonia | -| Semi.Avalonia | irihi团队开源UI控件库框架(MIT License) | https://www.irihi.tech/ | -| ASP.NET Core | 微软旗下最新服务端框架(MIT License) | https://dotnet.microsoft.com/zh-cn/apps/aspnet | -| MySQL | Oracle公司旗下商用友好的数据库 | https://www.mysql.com/cn/ | -| DDD | 当下流行的架构\设计模式 | https://learn.microsoft.com/zh-cn/dotnet/architecture/microservices/microservice-ddd-cqrs-patterns/ | -| MVVM | 当下流行的架构\设计模式 | https://learn.microsoft.com/zh-cn/dotnet/architecture/maui/mvvm | -| AOT | GeneralUpdate所有组件全线支持、兼容AOT编译 | https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/ | -| Linux (Ubuntu) | 本产品全线支持Linux操作系统 | https://cn.ubuntu.com/ | -| Windows | 支持win7以上版本的操作系统 | https://support.microsoft.com/zh-cn/welcometowindows | -| LoongOS | 国产(龙芯)操作系统(新世界) | https://www.loongson.cn/system/loongos | -| ...... | ...... | | +| Technology | Remarks | Details | +| -------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| .NET Core 9 | Latest free open-source framework by Microsoft (MIT License) | https://dotnet.microsoft.com/zh-cn/download/dotnet/9.0 | +| C#13 | One of the latest versions of Microsoft's open-source development languages (MIT License) | https://dotnet.microsoft.com/zh-cn/languages/csharp | +| Avalonia | Cross-platform open-source UI framework by the Avalonia team (MIT License) | https://avaloniaui.net/ | +| Prism.Avalonia | Project structure framework by PrismLibrary team (MIT License) | https://github.com/AvaloniaCommunity/Prism.Avalonia | +| Semi.Avalonia | Open-source UI control library framework by the irihi team (MIT License) | https://www.irihi.tech/ | +| ASP.NET Core | Latest server-side framework by Microsoft (MIT License) | https://dotnet.microsoft.com/zh-cn/apps/aspnet | +| MySQL | Commercial-friendly database by Oracle | https://www.mysql.com/cn/ | +| DDD | Popular architecture/design pattern | https://learn.microsoft.com/zh-cn/dotnet/architecture/microservices/microservice-ddd-cqrs-patterns/ | +| MVVM | Popular architecture/design pattern | https://learn.microsoft.com/zh-cn/dotnet/architecture/maui/mvvm | +| AOT | Full support for AOT compilation across all GeneralUpdate components | https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/ | +| Linux (Ubuntu) | Full support for Linux operating systems | https://cn.ubuntu.com/ | +| Windows | Supports operating systems from Windows 7 onwards | https://support.microsoft.com/zh-cn/welcometowindows | +| LoongOS | Domestic (Loongson) operating system (New World) | https://www.loongson.cn/system/loongos | +| ...... | ...... | | -## 企业客户 +## Corporate Clients ![](imgs\corporateclient1.png) @@ -69,12 +69,12 @@ GeneralLibrary团队针对企业级应用开发了GeneralSpacestation服务, -## 软著登记 +## Software Registration ![](imgs\ruanzhu.png) -## 联系我们 +## Contact Us -以下是企业咨询、报价、商务合作联系方式(加好友请注明来意拒绝闲聊,推荐加微信)。 +Below are the contact details for enterprise inquiries, quotations, and business cooperation (please indicate your purpose when adding as a friend, casual chat is declined, adding on WeChat is recommended). ![](imgs\contact.png) \ No newline at end of file diff --git a/website/docs/doc/GeneralUpdate.Bowl.md b/website/docs/doc/GeneralUpdate.Bowl.md index 8811ea1..8c362ab 100644 --- a/website/docs/doc/GeneralUpdate.Bowl.md +++ b/website/docs/doc/GeneralUpdate.Bowl.md @@ -1,42 +1,38 @@ --- + sidebar_position: 3 + --- -#### 背景故事 +#### Background Story ![](imgs\bowl.jpg) -Bowl是作者Juster养的一只橘猫,为什么给橘猫或组件起名成”碗“。因为橘猫容易胖,Juster希望它一次只吃一小碗就取名叫小碗。在GeneralUpdate的体系如果在升级过程中遭遇了重创,Bowl这时会挺身而出将残局恢复如初并分析失败原因。 +Bowl is an orange cat owned by the author Juster. The reason for naming an orange cat or component "Bowl" is because orange cats tend to get fat easily. Juster hopes it will eat only a small bowl at a time, hence the name "Little Bowl." In the GeneralUpdate system, if the upgrade process encounters significant issues, Bowl will step in to restore the situation and analyze the reasons for failure. ![](imgs\mybowl.jpg) +### Definition +Namespace: GeneralUpdate.Bowl -### 定义 - -命名空间:GeneralUpdate.Bowl - -程序集:GeneralUpdate.Bowl.dll +Assembly: GeneralUpdate.Bowl.dll - - -该组件在升级流程结束之前启动的一个独立进程,它在流程结束之前去启动主客户端应用程序并监控是否正常运行。 +This component is an independent process launched before the end of the upgrade process. It starts the main client application and monitors its normal operation before the process ends. ```c# public sealed class Bowl ``` -nuget安装 +NuGet Installation ```shell NuGet\Install-Package GeneralUpdate.Bowl -Version 3.0.0 ``` +### Example - -### 示例 - -以下示例定义方法,包含Bowl使用。 +The following example defines a method that includes the use of Bowl. ```c# var installPath = AppDomain.CurrentDomain.BaseDirectory; @@ -54,31 +50,25 @@ var processInfo = new MonitorParameter Bowl.Launch(processInfo); ``` +### Capture +If a crash is detected, the following files will be generated in the running directory: -### 捕获 +- 📒 Dump file (1.0.0.*_fail.dmp) +- 📒 Upgrade package version information (1.0.0.*_fail.json) +- 📒 Driver information (driverInfo.txt) +- 📒 Operating system/hardware information (systeminfo.txt) +- 📒 System event log (systemlog.evtx) -如果监控到崩溃闪退将会在运行目录下生成: - -- 📒Dump文件(1.0.0.*_fail.dmp) -- 📒升级包版本信息(1.0.0.*_fail.json) -- 📒驱动信息(driverInfo.txt) -- 📒操作系统信息/硬件信息(systeminfo.txt) -- 📒系统事件日志(systemlog.evtx) - -导出到“fail”目录下并根据版本号区分文件夹。 +These will be exported to the "fail" directory, categorized by version number. ![](imgs\crash.jpg) - - -#### (1)x.0.0.*_fail.dmp +#### (1) x.0.0.*_fail.dmp ![](imgs\dump.png) - - -#### (2)x.0.0.*_fail.json +#### (2) x.0.0.*_fail.json ```json { @@ -120,13 +110,10 @@ Bowl.Launch(processInfo); } ``` - - -#### (3)driverInfo.txt +#### (3) driverInfo.txt ```json - -模块名 显示名称 描述 驱动程序类型 启动模式 状态 状态 接受停止 接受暂停 分页缓冲池 代码(字节) BSS(字 链接日期 路径 Init(字节) +Module Name Display Name Description Driver Type Start Mode State Status Accept Stop Accept Pause Paged Pool Code(Bytes) BSS(Bytes) Link Date Path Init(Bytes) ============ ====================== ====================== ============= ========== ========== ========== =========== ============ ========== ========== ======= ====================== ================================================ ========== 360AntiAttac 360Safe Anti Attack Se 360Safe Anti Attack Se Kernel System Running OK TRUE FALSE 4,096 36,864 0 9/29/2022 3:45:03 PM C:\Windows\system32\Drivers\360AntiAttack64.sys 4,096 360AntiHacke 360Safe Anti Hacker Se 360Safe Anti Hacker Se Kernel System Running OK TRUE FALSE 4,096 139,264 0 11/27/2023 3:43:37 PM C:\Windows\system32\Drivers\360AntiHacker64.sys 8,192 @@ -137,145 +124,132 @@ Bowl.Launch(processInfo); //... ``` - - -#### (4)systeminfo.txt +#### (4) systeminfo.txt ```json - -主机名: **** -OS 名称: Microsoft Windows 11 专业版 -OS 版本: 10.0.2*** Build 22*** -OS 制造商: Microsoft Corporation -OS 配置: 独立工作站 -OS 构建类型: Multiprocessor Free -注册的所有人: ****@outlook.com -注册的组织: -产品 ID: ****-80000-***00-A**** -初始安装日期: 11/16/2023, 9:56:28 PM -系统启动时间: 11/26/2024, 9:37:51 PM -系统制造商: ASUS -系统型号: System Product Name -系统类型: x64-based PC -处理器: 安装了 1 个处理器。 +Host Name: **** +OS Name: Microsoft Windows 11 Pro +OS Version: 10.0.2*** Build 22*** +OS Manufacturer: Microsoft Corporation +OS Configuration: Standalone Workstation +OS Build Type: Multiprocessor Free +Registered Owner: ****@outlook.com +Registered Organization: +Product ID: ****-80000-***00-A**** +Original Install Date: 11/16/2023, 9:56:28 PM +System Boot Time: 11/26/2024, 9:37:51 PM +System Manufacturer: ASUS +System Model: System Product Name +System Type: x64-based PC +Processor(s): Installed 1 Processor(s). [01]: Intel** Family * Model *** Stepping * GenuineIntel ~**** Mhz -BIOS 版本: American Megatrends Inc. 1402, 4/1/2022 -Windows 目录: C:\Windows -系统目录: C:\Windows\system32 -启动设备: \Device\Ha*****olume1 -系统区域设置: zh-cn;中文(中国) -输入法区域设置: zh-cn;中文(中国) -时区: (UTC+08:00) **,**,*******,**** -物理内存总量: 16,194 MB -可用的物理内存: 1,795 MB -虚拟内存: 最大值: 25,410 MB -虚拟内存: 可用: 9,438 MB -虚拟内存: 使用中: 15,972 MB -页面文件位置: D:\****file.sys -域: WORKGROUP -登录服务器: \\**** -修补程序: 安装了 6 个修补程序。 +BIOS Version: American Megatrends Inc. 1402, 4/1/2022 +Windows Directory: C:\Windows +System Directory: C:\Windows\system32 +Boot Device: \Device\Ha*****olume1 +System Locale: zh-cn;Chinese (China) +Input Locale: zh-cn;Chinese (China) +Time Zone: (UTC+08:00) **,**,*******,**** +Total Physical Memory: 16,194 MB +Available Physical Memory: 1,795 MB +Virtual Memory: Max Size: 25,410 MB +Virtual Memory: Available: 9,438 MB +Virtual Memory: In Use: 15,972 MB +Page File Location(s): D:\****file.sys +Domain: WORKGROUP +Logon Server: \\**** +Hotfix(s):: 6 Hotfix(s) Installed. [01]: KB504**** [02]: KB502**** [03]: KB503**** [04]: KB503**** [05]: KB504**** [06]: KB504**** -网卡: 安装了 3 个 NIC。 +Network Card(s): 3 NIC(s) Installed. [01]: Intel(R) Ethernet Connection (**) I***-V - 连接名: 以太网 - 启用 DHCP: 是 - DHCP 服务器: 192.168.**.** - IP 地址 + Connection Name: Ethernet + DHCP Enabled: Yes + DHCP Server: 192.168.**.** + IP Address [01]: 192.168.**.** [02]: ***::2640:***:****:**** [02]: VMware Virtual Ethernet Adapter for VMnet1 - 连接名: VMware Network Adapter VMnet1 - 启用 DHCP: 是 - DHCP 服务器: 192.168.**.** - IP 地址 + Connection Name: VMware Network Adapter VMnet1 + DHCP Enabled: Yes + DHCP Server: 192.168.**.** + IP Address [01]: 192.168.**.** [02]: ***::9b3:***,***:**** [03]: VMware Virtual Ethernet Adapter for VMnet8 - 连接名: VMware Network Adapter VMnet8 - 启用 DHCP: 是 - DHCP 服务器: 192.168.**.** - IP 地址 + Connection Name: VMware Network Adapter VMnet8 + DHCP Enabled: Yes + DHCP Server: 192.168.**.** + IP Address [01]: 192.***,***:**** [02]: fe80::***:***:***:**** -Hyper-V 要求: 已检测到虚拟机监控程序。将不显示 Hyper-V 所需的功能。 +Hyper-V Requirements: A hypervisor has been detected. Features required for Hyper-V will not be displayed. //... ``` - - -#### (5)systemlog.evtx +#### (5) systemlog.evtx ![](imgs\evtx.png) +### Notes +Bowl provides runtime monitoring capabilities and exports relevant error information. -### 注解 - -Bowl提供运行监控功能,并导出相关错误信息 。 - - - -#### 方法 - -| Method | | -| -------- | -------- | -| Launch() | 启动监控 | - +#### Methods +| Method | Description | +| -------- | ---------------- | +| Launch() | Start monitoring | ### 🌼Launch() -**启动函数** +**Launch Function** ```c# Launch(MonitorParameter? monitorParameter = null); ``` -**参数** +**Parameters** ```c# public class MonitorParameter { - //被监控的目录 + // Directory being monitored public string TargetPath { get; set; } - //捕获的异常信息导出到的目录 + // Directory where captured exception information is exported public string FailDirectory { get; set; } - //备份目录 + // Backup directory public string BackupDirectory { get; set; } - //监控进程名称或者进程id + // Name or ID of the process being monitored public string ProcessNameOrId { get; set; } - //dump文件名 + // Dump file name public string DumpFileName { get; set; } - //升级包版本信息(.json)文件名 + // Upgrade package version information (.json) file name public string FailFileName { get; set; } /// /// Upgrade: upgrade mode. This mode is primarily used in conjunction with GeneralUpdate for internal use. Please do not modify it arbitrarily when the default mode is activated. - /// Normal: Normal mode,This mode can be used independently to monitor a single program. If the program crashes, it will export the crash information. + /// Normal: Normal mode, This mode can be used independently to monitor a single program. If the program crashes, it will export the crash information. /// public string WorkModel { get; set; } = "Upgrade"; } ``` +### Applicable To - -### 适用于 - -| 产品 | 版本 | +| Product | Version | | -------------- | ------------- | -| .NET | 5、6、7、8、9 | +| .NET | 5, 6, 7, 8, 9 | | .NET Framework | 4.6.1 | | .NET Standard | 2.0 | | .NET Core | 2.0 | diff --git a/website/docs/doc/GeneralUpdate.ClientCore.md b/website/docs/doc/GeneralUpdate.ClientCore.md index bf00775..bae35dc 100644 --- a/website/docs/doc/GeneralUpdate.ClientCore.md +++ b/website/docs/doc/GeneralUpdate.ClientCore.md @@ -2,39 +2,37 @@ sidebar_position: 4 --- -### 定义 +### Definition -命名空间:GeneralUpdate.ClientCore +Namespace: GeneralUpdate.ClientCore -程序集:GeneralUpdate.ClientCore.dll +Assembly: GeneralUpdate.ClientCore.dll -GeneralUpdate.ClientCore是最核心的组件之一,提供了大量主要功能。本质和Core没有区别,但是有职责上的区别ClientCore用于主程序中,更新升级助手然后关闭主程序启动升级助手。 +GeneralUpdate.ClientCore is one of the core components, offering a wide range of primary functionalities. Its essence is similar to Core, but it has a different role: ClientCore is used in the main program, where it assists in updates and upgrades and then closes the main program to launch the upgrade assistant. ```c# public class GeneralClientBootstrap : AbstractBootstrap ``` -nuget安装 +NuGet Installation ```shell NuGet\Install-Package GeneralUpdate.ClientCore -Version 3.0.0 ``` - - -### 示例 +### Example ![](imgs/muti_donwload.png) -以下示例定义方法,包含GeneralClientBootstrap使用。 +The following example defines methods involving the use of GeneralClientBootstrap. ```c# try { - Console.WriteLine($"主程序初始化,{DateTime.Now}!"); - Console.WriteLine("当前运行目录:" + Thread.GetDomain().BaseDirectory); + Console.WriteLine($"Main program initialization, {DateTime.Now}!"); + Console.WriteLine("Current running directory: " + Thread.GetDomain().BaseDirectory); await Task.Delay(2000); var configinfo = new Configinfo { @@ -45,31 +43,31 @@ try MainAppName = "GeneralUpdate.Client.exe", InstallPath = Thread.GetDomain().BaseDirectory, //configinfo.Bowl = "Generalupdate.CatBowl.exe"; - //当前客户端的版本号 + //Current client version ClientVersion = "1.0.0.0", - //当前升级端的版本号 + //Current upgrade client version UpgradeClientVersion = "1.0.0.0", - //产品id + //Product ID ProductId = "2d974e2a-31e6-4887-9bb1-b4689e98c***", - //应用密钥 + //Application secret key AppSecretKey = "dfeb5833-975e-4afb-88f1-6278ee9*****" }; - _ = await new GeneralClientBootstrap() //单个或多个更新包下载通知事件 - //单个或多个更新包下载速度、剩余下载事件、当前下载版本信息通知事件 + _ = await new GeneralClientBootstrap() //Notification for single or multiple update package downloads + //Notification for download speed, remaining download time, and current download version info .AddListenerMultiDownloadStatistics(OnMultiDownloadStatistics) - //单个或多个更新包下载完成 + //Completion of single or multiple update package downloads .AddListenerMultiDownloadCompleted(OnMultiDownloadCompleted) - //完成所有的下载任务通知 + //Notification for the completion of all download tasks .AddListenerMultiAllDownloadCompleted(OnMultiAllDownloadCompleted) - //下载过程出现的异常通知 + //Notification for exceptions during the download process .AddListenerMultiDownloadError(OnMultiDownloadError) - //整个更新过程出现的任何问题都会通过这个事件通知 + //Notification for any issues during the entire update process .AddListenerException(OnException) .SetConfig(configinfo) .Option(UpdateOption.DownloadTimeOut, 60) .Option(UpdateOption.Encoding, Encoding.UTF8) .LaunchAsync(); - Console.WriteLine($"主程序已启动,{DateTime.Now}!"); + Console.WriteLine($"Main program started, {DateTime.Now}!"); } catch (Exception e) { @@ -91,7 +89,7 @@ private List GetBlackFormats() } /// -/// 让用户决定是否跳过本次更新 +/// Allow users to decide whether to skip this update /// /// private async Task ShowCustomOption() @@ -101,14 +99,14 @@ private async Task ShowCustomOption() private void OnMultiDownloadStatistics(object sender, MultiDownloadStatisticsEventArgs e) { - //e.Remaining 剩余下载时间 - //e.Speed 下载速度 - //e.Version 当前下载的版本信息 - //e.TotalBytesToReceive 当前更新包需要下载的总大小 - //e.ProgressValue 当前进度值 - //e.ProgressPercentage 当前进度的百分比 - //e.Version 当前下载的版本信息 - //e.BytesReceived 已下载大小 + //e.Remaining Remaining download time + //e.Speed Download speed + //e.Version Current download version info + //e.TotalBytesToReceive Total size for the current update package + //e.ProgressValue Current progress value + //e.ProgressPercentage Current progress percentage + //e.Version Current download version info + //e.BytesReceived Downloaded size } private void OnException(object sender, ExceptionEventArgs e) @@ -118,7 +116,7 @@ private void OnException(object sender, ExceptionEventArgs e) private void OnMultiAllDownloadCompleted(object sender, MultiAllDownloadCompletedEventArgs e) { - //e.FailedVersions; 如果出现下载失败则会把下载错误的版本、错误原因统计到该集合当中。 + //e.FailedVersions; If download fails, the failed version and error reason will be recorded in this collection. DispatchMessage($"Is all download completed {e.IsAllDownloadCompleted}."); } @@ -135,471 +133,384 @@ private void OnMultiDownloadError(object sender, MultiDownloadErrorEventArgs e) } ``` +### Annotations +GeneralClientBootstrap provides the following capabilities. -### 注解 - -GeneralClientBootstrap提供以下能力。 +#### Properties -#### 属性 +| Properties | Description | +| ------------ | ------------------------------------------------------------ | +| UpdateOption | Enum for update operation configuration settings | +| Configinfo | Client-related parameter class (fields like AppType, AppName, AppSecretKey, etc.) | -| Properties | | -| ------------ | ---------------------------------------------------------- | -| UpdateOption | 更新操作配置设置枚举 | -| Configinfo | 客户端相关参数类(AppType、AppName、AppSecretKey等字段)。 | +#### Methods -#### 方法 - -| Method | | +| Method | Description | | -------------------------------------- | ------------------------------------------------------------ | -| LaunchTaskAsync() | Task异步启动更新 | -| LaunchAsync() | 启动更新 | -| SetBlacklist() | 设置更新文件黑名单,如果不需要更新文件 名则传入即可。 | -| Option() | 设置更新配置。 | -| Config() | 更新相关内容配置参数,url 服务器地址及 端口号, appSecretKey客户端唯一标识用于 区分产品分支。 | -| GetOption() | 获取更新配置。 | -| SetCustomSkipOption() | 让用户在非强制更新的状态下决定是否进行更新。 | -| AddCustomOption() | 添加一个异步的自定义操作。理论上,任何自定义操作都可以完成。建议注册环境检查方法,以确保更新完成后存在正常的依赖和环境。 | -| AddListenerMultiAllDownloadCompleted() | 完成所有的下载任务通知。 | -| AddListenerMultiDownloadCompleted() | 单个或多个更新包下载完成事件。 | -| AddListenerMultiDownloadError() | 监听每个版本下载异常的事件 | -| AddListenerMultiDownloadStatistics() | 单个或多个更新包下载速度、剩余下载事 件、当前下载版本信息通知事件。 | -| AddListenerException() | 整个更新过程出现的任何问题都会通过这个回调函数通知。 | - - +| LaunchTaskAsync() | Task-based asynchronous update launch | +| LaunchAsync() | Launch update | +| SetBlacklist() | Set blacklist for update files; pass in if certain files should not be updated. | +| Option() | Set update configuration. | +| Config() | Configure update-related parameters, such as server URL and port, appSecretKey for client identification and product branching. | +| GetOption() | Get update configuration. | +| SetCustomSkipOption() | Allow users to decide whether to proceed with an update in non-mandatory update scenarios. | +| AddCustomOption() | Add an asynchronous custom operation. In theory, any custom operation can be completed. It's recommended to register environment check methods to ensure dependencies and environment are intact after the update. | +| AddListenerMultiAllDownloadCompleted() | Notification for the completion of all download tasks. | +| AddListenerMultiDownloadCompleted() | Event for the completion of single or multiple update package downloads. | +| AddListenerMultiDownloadError() | Listen for errors during each version download | +| AddListenerMultiDownloadStatistics() | Notification for download speed, remaining download time, and current download version info. | +| AddListenerException() | Notification for any issues during the entire update process. | ### 🌴Packet -| 属性 | +| Property | | ------------------------------------------------------------ | -| **MainUpdateUrl** string 更新检查api地址。 | +| **MainUpdateUrl** string Main update check API address. | | **AppType** int 1:ClientApp 2:UpdateApp | -| **UpdateUrl** string Update 更新检查api地址。 | -| **AppName** string 需要启动应用程序的名称。 | -| **MainAppName** string 需要启动主应用程序的名称。 | -| **Format** string 更新包文件格式(默认格式为Zip)。 | -| **IsUpgradeUpdate** bool 是否需要更新来升级应用程序。 | -| **IsMainUpdate** bool 主应用程序是否需要更新。 | -| **UpdateLogUrl** string 更新日志网页地址。 | -| **UpdateVersions** List 需要更新的版本信息VersionInfo。 | -| **Encoding** Encoding 文件操作的编码格式。 | -| **DownloadTimeOut** int 下载超时时间。 | -| **AppSecretKey** string 应用程序密钥,需要和服务器约定好。 | -| **ClientVersion** string 客户端当前版本号。 | -| **LastVersion** string 最新版本号。 | -| **InstallPath** string 安装路径(用于更新文件逻辑)。 | -| **TempPath** string 下载文件临时存储路径(用于更新文件逻辑)。 | -| **ProcessBase64** string 升级终端程序的配置参数。 | -| **Platform** string 当前策略所属的平台。(Windows\linux\Mac) | -| **BlackFiles** List 黑名单中的文件将跳过更新。 | -| **BlackFormats** 黑名单中的文件格式将跳过更新。 | -| **DriveEnabled** bool 是否启用驱动升级功能。 | -| **WillMessageEnabled** bool 是否开启遗言功能,如果想要启动需要同步部署'GeneralUpdate. SystemService'服务。 | +| **UpdateUrl** string Update check API address. | +| **AppName** string Name of the application to be launched. | +| **MainAppName** string Name of the main application to be launched. | +| **Format** string Update package file format (default is Zip). | +| **IsUpgradeUpdate** bool Indicates if the update is needed to upgrade the application. | +| **IsMainUpdate** bool Indicates if the main application needs an update. | +| **UpdateLogUrl** string URL for the update log webpage. | +| **UpdateVersions** List Version information that needs updating. | +| **Encoding** Encoding File operation encoding format. | +| **DownloadTimeOut** int Download timeout duration. | +| **AppSecretKey** string Application secret key, agreed upon with the server. | +| **ClientVersion** string Current client version. | +| **LastVersion** string Latest version. | +| **InstallPath** string Installation path (used for update file logic). | +| **TempPath** string Temporary storage path for downloaded files (used for update file logic). | +| **ProcessBase64** string Configuration parameters for the upgrade terminal program. | +| **Platform** string Platform to which the current strategy belongs (Windows\Linux\Mac). | +| **BlackFiles** List Files in the blacklist will be skipped during updates. | +| **BlackFormats** File formats in the blacklist will be skipped during updates. | +| **DriveEnabled** bool Indicates if the driver upgrade feature is enabled. | ### 🌴Configinfo -| **属性** | -| ----------------------------------------------------- | -| **AppType** int 1:ClientApp 2:UpdateApp | -| **AppName** string 需要启动应用程序的名称。 | -| **AppSecretKey** string 应用程序密钥。 | -| **ClientVersion** string 客户端当前版本。 | -| **UpdateUrl** string 更新检查api地址。 | -| **UpdateLogUrl** string 更新日志网页地址。 | -| **InstallPath** string 安装路径(用于更新文件逻辑)。 | -| **MainUpdateUrl** string 更新检查api地址。 | -| **MainAppName** string 主客户端应用名称 | - - +| Property | +| ------------------------------------------------------------ | +| **AppType** int 1:ClientApp 2:UpdateApp | +| **AppName** string Name of the application to launch. | +| **AppSecretKey** string Application secret key. | +| **ClientVersion** string Current client version. | +| **UpdateUrl** string Update check API address. | +| **UpdateLogUrl** string URL for the update log webpage. | +| **InstallPath** string Installation path (used for update file logic). | +| **MainUpdateUrl** string Main update check API address. | +| **MainAppName** string Main client application name | ### 🍵UpdateOption -| **枚举** | +| Enum | | ------------------------------------------------------------ | -| **Format** 更新包的文件格式。 | -| **Encoding** 压缩编码。 | -| **DownloadTimeOut** 超时时间(单位:秒)。如果未指定此参数,则默认超时时间为30秒。 | - - +| **Format** File format of the update package. | +| **Encoding** Compression encoding. | +| **DownloadTimeOut** Timeout duration (in seconds). If not specified, the default timeout is 30 seconds. | ### 🌼LaunchTaskAsync() -**方法** +**Method** -Task异步启动更新。 +Asynchronously launch an update task. ```c# public Task LaunchTaskAsync(); ``` - - ### 🌼LaunchAsync() -**方法** +**Method** -启动更新。 +Launch the update. ```c# public virtual TBootstrap LaunchAsync(); ``` - - ### 🌼SetBlacklist() -**方法** +**Method** -设置更新时会忽略的黑名单信息,避免特殊文件二进制差分更新时无法使用导致更新失败。 +Set the blacklist information that will be ignored during updates to prevent special files from causing update failures when binarydifferential updates cannot be used. ```c# public virtual TBootstrap SetBlacklist(List files = null, List fileFormats = null); ``` - - -**参数类型** +**Parameter Types** ```c# -List 黑名单信息集合。 +List Collection of blacklist information. ``` - - -**参数** +**Parameters** ```c# -files List 黑名单文件名称集合。 +files List Collection of file names in the blacklist. -fileFormats List 黑名单文件后缀集合。 +fileFormats List Collection of file extensions in the blacklist. ``` - - ### 🌼Option() -**方法** +**Method** -设置更新配置。 +Set update configuration. ```c# public virtual TBootstrap Option(UpdateOption option, T value); ``` +**Parameter Types** +T Type for setting update operation UpdateOption. -**参数类型** - -T 要设置更新操作UpdateOption。 - - - -**参数** +**Parameters** ```c# -option UpdateOption 配置动作枚举。 +option UpdateOption Configuration action enumeration. -value T 需要设置的值,值类型根据UpdateOption枚举来。 +value T The value to set, with the type determined by the UpdateOption enumeration. ``` - - ### 🌼Config() -**方法** +**Method** -Custom Configuration (Recommended : All platforms). +Custom Configuration (Recommended for all platforms). ```c# public GeneralClientBootstrap Config(Configinfo info); public GeneralClientBootstrap Config(string url, string appSecretKey, string appName = "GeneralUpdate.Upgrade"); ``` - - -**参数类型** +**Parameter Types** Configinfo -客户端相关参数类(AppType、AppName、AppSecretKey等字段)。 - - - -**参数** +Client-related parameter class (fields like AppType, AppName, AppSecretKey, etc.). -**info** Configinfo 客户端相关参数类。 +**Parameters** -**url** string 远程服务器地址。 +**info** Configinfo Client-related parameter class. -**appSecretKey** string application key(与服务端约定好的密钥,用于区分客户端进行版本管理或指定客户端推送升级). - -**appName** string 更新程序的名称不需要包含扩展名。 +**url** string Remote server address. +**appSecretKey** string Application key (a secret key agreed upon with the server, used for client version management or specifying client upgrade). +**appName** string Name of the update program, without the extension. ### 🌼GetOption() -**方法** +**Method** ```c# public virtual T GetOption(UpdateOption option); ``` -**参数类型** +**Parameter Types** T -根据UpdateOption枚举获取结果。 - - +Result obtained based on the UpdateOption enumeration. -**参数** +**Parameters** ```c# -option UpdateOption 具体枚举内容参考本文档中的 🍵UpdateOption。 +option UpdateOption Specific enumeration content as referenced in the 🍵UpdateOption section of this document. ``` - - ### 🌼SetCustomSkipOption() -**方法** +**Method** -让用户决定是否在非强制更新状态下进行更新。 +Allow users to decide whether to proceed with an update in non-mandatory update scenarios. ```c# public GeneralClientBootstrap SetCustomSkipOption(Func func); public GeneralClientBootstrap SetCustomSkipOption(Func> func); ``` - - -**参数类型** +**Parameter Types** ```c# -Func 注入一个同步的自定义回调函数,通常用来做用户决定是否跳过本次版本更新。 -Func> 注入一个Task异步的自定义回调函数。 +Func Inject a synchronous custom callback function, often used to let users decide whether to skip the current version update. +Func> Inject a Task-based asynchronous custom callback function. ``` - - -**参数** +**Parameters** ```c# -func Func 注入一个同步的自定义回调函数,通常用来做用户决定是否跳过本次版本更新。 -func Func> 注入一个Task异步的自定义回调函数。 +func Func Inject a synchronous custom callback function, often used to let users decide whether to skip the current version update. +func Func> Inject a Task-based asynchronous custom callback function. ``` - - ### 🌼AddCustomOption() -**方法** +**Method** -添加一个异步的自定义操作。理论上,任何自定义操作都可以完成。建议注册环境检查方法,以确保更新完成后存在正常的依赖和环境。 +Add an asynchronous custom operation. In theory, any custom operation can be completed. It's recommended to register environment check methods to ensure dependencies and environment are intact after the update. ```c# public GeneralClientBootstrap AddCustomOption(List> funcs); public GeneralClientBootstrap AddCustomOption(List>> funcs); ``` - - -**参数类型** +**Parameter Types** ```c# -List> 注入一组同步的带bool返回值的自定义回调函数。 +List> Inject a set of synchronous custom callback functions with a boolean return value. -List>> 注入一组Task异步的带bool返回值的自定义回调函数。 +List>> Inject a set of Task-based asynchronous custom callback functions with a boolean return value. ``` - - -**参数** +**Parameters** ```c# -funcs List> 注入一组同步的自定义回调函数,通常用来做环境检查工作(例如:检查是否缺少VC++的环境库、或硬件设备驱动程序打印机、摄像头等)。 +funcs List> Inject a set of synchronous custom callback functions, usually for environment checks (e.g., checking for missing VC++ libraries or hardware device drivers like printers, cameras, etc.). -funcs List>> 注入一组Task异步的自定义回调函数。 +funcs List>> Inject a set of Task-based asynchronous custom callback functions. ``` - - ### 🌼AddListenerMultiAllDownloadCompleted() -**方法** +**Method** ```c# public TBootstrap AddListenerMultiAllDownloadCompleted(Action callbackAction); ``` - - -**参数类型** +**Parameter Types** **sender** object -操作句柄。 +Operation handle. **args** MultiAllDownloadCompletedEventArgs -所有版本下载完成通知参数。 - +Parameters for notification when all versions are downloaded. - -**参数** +**Parameters** ```c# callbackAction Action ``` -监听所有更新版本下载完成的事件回传参数。 - - - -**参数** - -```c# -callbackAction Action -``` - -监听每个版本下载进度事件回传参数。 - - +Listen for events when all update versions are downloaded. ### 🌼AddListenerMultiDownloadCompleted() -**方法** +**Method** ```c# public TBootstrap AddListenerMultiDownloadCompleted(Action callbackAction); ``` - - -**参数类型** +**Parameter Types** sender object -操作句柄。 +Operation handle. MultiDownloadCompletedEventArgs -监听每个版本更新包下载完成回传参数。 - +Parameters for listening to the completion of each version update package download. - -**参数** +**Parameters** ```c# callbackAction Action ``` -监听每个版本下载异常回传参数。 - - +Listen for events when each version download is completed. ### 🌼AddListenerMultiDownloadError() -**方法** +**Method** ```c# public TBootstrap AddListenerMultiDownloadError(Action callbackAction); ``` - - -**参数类型** +**Parameter Types** **sender** object -操作句柄。 +Operation handle. **args** MultiDownloadErrorEventArgs -下载异常通知参数。 - +Parameters for notification of download errors. - -**参数** +**Parameters** ```c# callbackAction Action ``` -监听每个版本下载异常回传参数。 - - +Listen for events when each version download encounters an error. ### 🌼AddListenerMultiDownloadStatistics() -**方法** +**Method** ```c# public TBootstrap AddListenerMultiDownloadStatistics(Action callbackAction); ``` - - -**参数类型** +**Parameter Types** **sender** object -操作句柄。 +Operation handle. **args** MultiDownloadStatisticsEventArgs -下载信息统计(下载速度、下载大小等)参数。 +Parameters for download information statistics (download speed, download size, etc.). - - -**参数** +**Parameters** ```c# callbackAction Action ``` -监听每个版本下载统计信息事件。 - - +Listen for events about download statistics for each version. ### 🌼AddListenerException() -**方法** +**Method** ```c# public TBootstrap AddListenerException(Action callbackAction); ``` - - -**参数类型** +**Parameter Types** **sender** object -操作句柄。 +Operation handle. **args** ExceptionEventArgs -异常参数。 - - +Exception parameters. -**参数** +**Parameters** ```c# callbackAction Action ``` -监听更新组件内部的所有异常。 - - +Listen for all exceptions within the update component. -### 适用于 +### Applicable To -| 产品 | 版本 | +| Product | Version | | -------------- | ------------- | -| .NET | 5、6、7、8、9 | +| .NET | 5, 6, 7, 8, 9 | | .NET Framework | 4.6.1 | | .NET Standard | 2.0 | | .NET Core | 2.0 | diff --git a/website/docs/doc/GeneralUpdate.Common.md b/website/docs/doc/GeneralUpdate.Common.md index 9903ac0..19076e7 100644 --- a/website/docs/doc/GeneralUpdate.Common.md +++ b/website/docs/doc/GeneralUpdate.Common.md @@ -1,18 +1,14 @@ ---- -sidebar_position: 8 ---- +### Definition -### 定义 +Namespace: GeneralUpdate.Common -命名空间:GeneralUpdate.Common +Assembly: GeneralUpdate.Common.dll -程序集:GeneralUpdate.Common.dll +This component primarily serves as a library for the infrastructure and shared code required by the GeneralUpdate system, making it one of the core components that must be referenced. -该组件的主要作用是支撑GeneralUpdate体系所需要的基础设施和共用代码的库,所以为核心组件之一必须引用。 - -nuget安装 +NuGet Installation ```shell NuGet\Install-Package GeneralUpdate.Common -Version 3.0.0 diff --git a/website/docs/doc/GeneralUpdate.Core.md b/website/docs/doc/GeneralUpdate.Core.md index 80d6bd4..c4c5225 100644 --- a/website/docs/doc/GeneralUpdate.Core.md +++ b/website/docs/doc/GeneralUpdate.Core.md @@ -1,58 +1,52 @@ ---- -sidebar_position: 5 ---- +### Definition -### 定义 +Namespace: GeneralUpdate.Core -命名空间:GeneralUpdate.Core +Assembly: GeneralUpdate.Core.dll -程序集:GeneralUpdate.Core.dll - -GeneralUpdate.Core是最核心的组件之一,提供了大量主要功能。当主程序升级操作完成之后会通过进程 启动并传参的方式调用本组件来完成主程序升级操作。(主要职责更新主程序) +GeneralUpdate.Core is one of the most essential components, providing a wide range of primary functionalities. Once the main program upgrade operation is completed, this component is invoked through process startup and parameter passing to complete the main program upgrade operation. (Main responsibility is updating the main program) ```c# public class GeneralUpdateBootstrap : AbstractBootstrap ``` -nuget安装 +NuGet Installation ```shell NuGet\Install-Package GeneralUpdate.Core -Version 3.0.0 ``` - - -### 示例 +### Example ![](imgs/muti_donwload.png) -以下示例定义方法,包含GeneralUpdateBootstrap使用方法。 +The following example defines methods, including the usage of GeneralUpdateBootstrap. ```c# try { - Console.WriteLine($"升级程序初始化,{DateTime.Now}!"); - Console.WriteLine("当前运行目录:" + Thread.GetDomain().BaseDirectory); + Console.WriteLine($"Upgrade program initialization, {DateTime.Now}!"); + Console.WriteLine("Current running directory: " + Thread.GetDomain().BaseDirectory); await Task.Delay(2000); await new GeneralUpdateBootstrap() - //单个或多个更新包下载速度、剩余下载事件、当前下载版本信息通知事件 + // Notification event for download speed, remaining download time, and current version information of single or multiple update packages .AddListenerMultiDownloadStatistics(OnMultiDownloadStatistics) - //单个或多个更新包下载完成 + // Completion of download for single or multiple update packages .AddListenerMultiDownloadCompleted(OnMultiDownloadCompleted) - //完成所有的下载任务通知 + // Notification for completion of all download tasks .AddListenerMultiAllDownloadCompleted(OnMultiAllDownloadCompleted) - //下载过程出现的异常通知 + // Notification for exceptions during the download process .AddListenerMultiDownloadError(OnMultiDownloadError) - //整个更新过程出现的任何问题都会通过这个事件通知 + // Any issues during the entire update process will be notified through this event .AddListenerException(OnException) - //设置字段映射表,用于解析所有驱动包的信息的字符串 + // Set field mappings for parsing information strings of all driver packages //.SetFieldMappings(fieldMappingsCN) - //是否开启驱动更新 + // Enable driver updates //.Option(UpdateOption.Drive, true) .LaunchAsync(); - Console.WriteLine($"升级程序已启动,{DateTime.Now}!"); + Console.WriteLine($"Upgrade program has started, {DateTime.Now}!"); } catch (Exception e) { @@ -88,319 +82,263 @@ private static void OnException(object sender, ExceptionEventArgs e) } ``` +### Annotations +GeneralUpdateBootstrap provides the following capabilities. -### 注解 - -GeneralUpdateBootstrap提供以下能力。 +#### Constructors -#### 构造函数 +| Constructors | Description | +| ------------------------ | ------------------------------------------ | +| GeneralUpdateBootstrap() | Current GeneralUpdateBootstrap constructor | +| base:AbstractBootstrap() | Parent class AbstractBootstrap constructor | -| Constructors | | -| ------------------------ | ---------------------------------- | -| GeneralUpdateBootstrap() | 当前GeneralUpdateBootstrap构造函数 | -| base:AbstractBootstrap() | 父类AbstractBootstrap构造函数 | +#### Properties -#### 属性 - -| Properties | | -| ------------ | -------------------- | -| Packet | 更新包信息 | -| UpdateOption | 更新操作配置设置枚举 | - -#### 方法 - -| Method | | -| -------------------------------------- | ------------------------------------- | -| LaunchTaskAsync() | Task异步启动更新 | -| LaunchAsync() | 启动更新 | -| Option() | 设置更新配置。 | -| GetOption() | 获取更新配置。 | -| AddListenerMultiAllDownloadCompleted() | 监听所有更新版本下载完成事件 | -| AddListenerMultiDownloadCompleted() | 监听每个版本下载完成事件 | -| AddListenerMultiDownloadError() | 监听每个版本下载异常的事件 | -| AddListenerMultiDownloadStatistics() | 监听每个版本下载统计信息\下载进度事件 | -| AddListenerException() | 监听更新组件内部的所有异常 | +| Properties | Description | +| ------------ | ------------------------------------------ | +| Packet | Update package information | +| UpdateOption | Update operation configuration enumeration | +#### Methods +| Method | Description | +| -------------------------------------- | ---------------------------------------------------------- | +| LaunchTaskAsync() | Asynchronously launch update with Task | +| LaunchAsync() | Launch update | +| Option() | Set update configuration | +| GetOption() | Get update configuration | +| AddListenerMultiAllDownloadCompleted() | Listen for completion of all version downloads | +| AddListenerMultiDownloadCompleted() | Listen for completion of each version download | +| AddListenerMultiDownloadError() | Listen for download errors for each version | +| AddListenerMultiDownloadStatistics() | Listen for download statistics/progress for each version | +| AddListenerException() | Listen for all internal exceptions in the update component | ### 🍵UpdateOption -**枚举** - -**Drive** 是否启用驱动升级功能。 - +**Enumeration** +**Drive** Whether to enable driver upgrade functionality. ### 🌼LaunchTaskAsync() -**方法** +**Method** -Task异步启动更新。 +Asynchronously launch update with Task. ```c# public Task LaunchTaskAsync(); ``` - - ### 🌼LaunchAsync() -**方法** +**Method** -启动更新。 +Launch update. ```c# public virtual TBootstrap LaunchAsync(); ``` - - ### 🌼SetBlacklist() -**方法** +**Method** -设置更新时会忽略的黑名单信息,避免特殊文件二进制差分更新时无法使用导致更新失败。 +Set information for blacklisted items to be ignored during updates to avoid failures due to special files not being usable in binary differential updates. ```c# public virtual TBootstrap SetBlacklist(List files = null, List fileFormats = null); ``` - - -**参数类型** +**Parameter Types** ```c# -List 黑名单信息集合。 +List Collection of blacklist information. ``` - - -**参数** +**Parameters** ```c# -files List 黑名单文件名称集合。 +files List Collection of blacklisted file names. -fileFormats List 黑名单文件后缀集合。 +fileFormats List Collection of blacklisted file extensions. ``` - - ### 🌼Option() -**方法** +**Method** -设置更新配置。 +Set update configuration. ```c# public virtual TBootstrap Option(UpdateOption option, T value); ``` +**Parameter Types** +T The type for setting update operations in UpdateOption. -**参数类型** - -T 要设置更新操作UpdateOption。 - - - -**参数** +**Parameters** ```c# -option UpdateOption 配置动作枚举。 +option UpdateOption Configuration action enumeration. -value T 需要设置的值,值类型根据UpdateOption枚举来。 +value T The value to be set, with the type determined by the UpdateOption enumeration. ``` - - ### 🌼GetOption() -**方法** +**Method** ```c# public virtual T GetOption(UpdateOption option); ``` -**参数类型** - -T 根据UpdateOption枚举获取结果。 - +**Parameter Types** +T Result obtained based on UpdateOption enumeration. -**参数** +**Parameters** ```c# -option UpdateOption 具体枚举内容参考本文档中的 🍵UpdateOption。 +option UpdateOption Refer to 🍵UpdateOption in this document for specific enumeration content. ``` - - ### 🌼AddListenerMultiAllDownloadCompleted() -**方法** +**Method** ```c# public TBootstrap AddListenerMultiAllDownloadCompleted(Action callbackAction); ``` - - -**参数类型** +**Parameter Types** **sender** object -操作句柄。 +Operation handle. **args** MultiAllDownloadCompletedEventArgs -所有版本下载完成通知参数。 - +Parameters for notification of completion of all version downloads. - -**参数** +**Parameters** ```c# callbackAction Action ``` -监听所有更新版本下载完成的事件回传参数。 - - +Parameters for the event callback when all update versions have been downloaded. ### 🌼AddListenerMultiDownloadCompleted() -**方法** +**Method** ```c# public TBootstrap AddListenerMultiDownloadCompleted(Action callbackAction); ``` - - -**参数类型** +**Parameter Types** sender object -操作句柄。 +Operation handle. MultiDownloadCompletedEventArgs -监听每个版本更新包下载完成回传参数。 - +Parameters for the callback when each version update package download is completed. - -**参数** +**Parameters** ```c# callbackAction Action ``` -监听每个版本下载异常回传参数。 - - +Parameters for the callback when each version download encounters an error. ### 🌼AddListenerMultiDownloadError() -**方法** +**Method** ```c# public TBootstrap AddListenerMultiDownloadError(Action callbackAction); ``` - - -**参数类型** +**Parameter Types** **sender** object -操作句柄。 +Operation handle. **args** MultiDownloadErrorEventArgs -下载异常通知参数。 - - +Parameters for download error notifications. -**参数** +**Parameters** ```c# callbackAction Action ``` -监听每个版本下载异常回传参数。 - - +Parameters for the callback when each version download encounters an error. ### 🌼AddListenerMultiDownloadStatistics() -**方法** +**Method** ```c# public TBootstrap AddListenerMultiDownloadStatistics(Action callbackAction); ``` - - -**参数类型** +**Parameter Types** **sender** object -操作句柄。 +Operation handle. **args** MultiDownloadStatisticsEventArgs -下载信息统计(下载速度、下载大小等)参数。 +Parameters for download statistics (download speed, download size, etc.). - - -**参数** +**Parameters** ```c# callbackAction Action ``` -监听每个版本下载统计信息事件。 - - +Parameters for the event callback for download statistics for each version. ### 🌼AddListenerException() -**方法** +**Method** ```c# public TBootstrap AddListenerException(Action callbackAction); ``` - - -**参数类型** +**Parameter Types** **sender** object -操作句柄。 +Operation handle. **args** ExceptionEventArgs -异常参数。 - +Exception parameters. - -**参数** +**Parameters** ```c# callbackAction Action ``` -监听更新组件内部的所有异常。 - - +Parameters for the callback for all internal exceptions in the update component. -### 适用于 +### Applicable to -| 产品 | 版本 | +| Product | Versions | | -------------- | ------------- | -| .NET | 5、6、7、8、9 | +| .NET | 5, 6, 7, 8, 9 | | .NET Framework | 4.6.1 | | .NET Standard | 2.0 | | .NET Core | 2.0 | diff --git a/website/docs/doc/GeneralUpdate.Differential.md b/website/docs/doc/GeneralUpdate.Differential.md index d053ca7..4b1b0fe 100644 --- a/website/docs/doc/GeneralUpdate.Differential.md +++ b/website/docs/doc/GeneralUpdate.Differential.md @@ -1,115 +1,101 @@ ---- -sidebar_position: 6 ---- +### Definition -### 定义 +Namespace: GeneralUpdate.Differential -命名空间:GeneralUpdate.Differential +Assembly: GeneralUpdate.Differential.dll -程序集:GeneralUpdate.Differential.dll - -该组件提供文件的二进制差分补丁文件生成(算法),文件增量识别(版本差异)、删除文件识别(版本差异)、黑名单、补丁还原等能力。 +This component provides capabilities for generating binary differential patch files (algorithm), file increment identification (version differences), deleted file identification (version differences), blacklisting, patch restoration, and more. ```c# public sealed class DifferentialCore ``` -nuget安装 +NuGet Installation ```shell NuGet\Install-Package GeneralUpdate.Differential -Version 3.0.0 ``` +### Example - -### 示例 - -以下示例定义方法,以包含增量识别,生成二进制补丁、补丁还原、设置黑名单示例GeneralUpdate.Tools项目中的打包工具也是强依赖此组件。 +The following example defines methods for increment identification, generating binary patches, patch restoration, and setting blacklists. The packaging tool in the GeneralUpdate.Tools project also strongly depends on this component. ```c# -//增量识别,生成二进制补丁 +// Increment identification, generating binary patches public async Task TestDifferentialClean() { - //上一个版本的客户端文件夹路径 + // Path to the previous version's client folder var path1 = "D:\\packet\\source"; - //最新版本客户端文件夹路径 + // Path to the latest version's client folder var path2 = "D:\\packet\\target"; - //补丁文件生成路径 + // Path for generating patch files var path3 = "D:\\packet\\patchs"; await DifferentialCore.Instance.Clean(path1, path2, path3); } -//补丁还原 +// Patch restoration public async Task TestDifferentialDirty() { - //当前版本的客户端文件夹路径 + // Path to the current version's client folder var path1 = "D:\\packet\\source"; - //补丁文件生成路径 + // Path for generating patch files var path2 = "D:\\packet\\patchs"; await DifferentialCore.Instance.Dirty(path1, path2); } ``` +### Annotations +DifferentialCore provides capabilities for increment identification, generating binary patches, patch restoration, and setting blacklists. -### 注解 - -DifferentialCore提供增量识别,生成二进制补丁、补丁还原、设置黑名单能力。 - -#### 方法 - -| 名称 | 类型 | 备注 | -| ------- | ---- | ---------------------------------------------------- | -| Clean() | 方法 | 增量识别,删除文件识别,生成二进制补丁文件 | -| Dirty() | 方法 | 补丁还原(将补丁打到旧的客户端文件上达到更新的目的) | - +#### Methods +| Name | Type | Description | +| ------- | ------ | ------------------------------------------------------------ | +| Clean() | Method | Increment identification, deleted file identification, and generating binary patch files | +| Dirty() | Method | Patch restoration (applying patches to old client files to achieve updates) | ### 🌼Clean() -**方法** +**Method** -生成补丁文件[不能包含文件名相同但扩展名不同的文件]。 +Generate patch files [cannot include files with the same name but different extensions]. ```c# public async Task Clean(string sourcePath, string targetPath, string patchPath = null); ``` -**参数** - -**sourcePath** 上一个版本的文件夹路径。 - -**targetPath** 最近版本的文件夹路径。 +**Parameters** -**patchPath** 将发现的增量更新文件存储在临时目录中。 +**sourcePath** Path to the previous version's folder. +**targetPath** Path to the latest version's folder. +**patchPath** Directory to store the discovered incremental update files temporarily. ### 🌼Dirty() -**方法** +**Method** -应用补丁[不能包含文件名相同但扩展名不同的文件]。 +Apply patches [cannot include files with the same name but different extensions]. ```c# public async Task Dirty(string appPath, string patchPath); ``` -**参数** - -**appPath** 客户端应用程序目录。 - -**patchPath** 补丁文件路径。 +**Parameters** +**appPath** Client application directory. +**patchPath** Path to the patch files. -### 适用于 +### Applicable to -| 产品 | 版本 | +| Product | Versions | | -------------- | ------------- | -| .NET | 5、6、7、8、9 | +| .NET | 5, 6, 7, 8, 9 | | .NET Framework | 4.6.1 | | .NET Standard | 2.0 | | .NET Core | 2.0 | \ No newline at end of file diff --git a/website/docs/doc/GeneralUpdate.Maui.OSS.md b/website/docs/doc/GeneralUpdate.Maui.OSS.md index 4a7ff7a..b037797 100644 --- a/website/docs/doc/GeneralUpdate.Maui.OSS.md +++ b/website/docs/doc/GeneralUpdate.Maui.OSS.md @@ -1,38 +1,34 @@ --- -sidebar_position: 10 ---- -### 定义 +### Definition -命名空间:GeneralUpdate.Maui.OSS +Namespace: GeneralUpdate.Maui.OSS -程序集:GeneralUpdate.Maui.OSS.dll +Assembly: GeneralUpdate.Maui.OSS.dll -GeneralUpdate.Maui.OSS组件用来实现.NET MAUI更新的机制,目前只支持安卓平台的自动升级。 +The GeneralUpdate.Maui.OSS component is used to implement the update mechanism for .NET MAUI, currently only supporting automatic upgrades on the Android platform. ```c# public sealed class GeneralUpdateOSS ``` -nuget安装 +NuGet Installation ```shell NuGet\Install-Package GeneralUpdate.Maui.OSS -Version 1.0.0 ``` +### Example - -### 示例 - -​ ![](imgs/maui_android_upgrade.png) +![](imgs/maui_android_upgrade.png) ![](imgs/oss_maui_flow.png) -1.准备version.json版本信息配置文件,更新文件(update.apk)更新文件就直接是新版本的apk了 (或.abb)。 +1. Prepare the version.json configuration file and the update file (update.apk), which is the new version of the apk (or .abb). -2.Client启动时直接请求OSS服务器或文件服务器,下载version.json文件。 +2. When the client starts, it directly requests the OSS server or file server to download the version.json file. ```json { @@ -44,11 +40,9 @@ NuGet\Install-Package GeneralUpdate.Maui.OSS -Version 1.0.0 } ``` -3.下载到本地之后解析版本信息内容,判断是否需要更新。 4.需要更新则下载update.apk。 5.下载完成之后执行安装,这一步就交给了安卓操作系统执行。执行完成之后运行新版本app。 - +3. After downloading locally, parse the version information content to determine if an update is needed. 4. If an update is needed, download update.apk. 5. After the download is complete, execute the installation, which is handled by the Android operating system. After execution, run the new version of the app. - -以下示例定义方法,包含GeneralUpdateOSS使用方法。 +The following example defines methods, including how to use GeneralUpdateOSS. ```c# Task.Run(async () => @@ -64,141 +58,115 @@ Task.Run(async () => }); ``` +### Annotations +GeneralUpdateOSS provides the following capabilities. -### 注解 - -GeneralUpdateOSS提供以下能力。 - -#### 属性 - -| Properties | | -| ------------- | ------------------------ | -| ParamsAndroid | 安卓平台的跟新配置参数。 | +#### Properties +| Properties | Description | +| ------------- | ----------------------------------------------------- | +| ParamsAndroid | Update configuration parameters for Android platform. | +#### Methods -#### 方法 - -| Method | | -| ---------------------------- | --------------------------- | -| Start() | 开始针对安卓平台的OSS更新。 | -| AddListenerDownloadProcess() | 监控下载进度。 | -| AddListenerException() | 监听内部异常信息。 | - - +| Method | Description | +| ---------------------------- | ------------------------------------------ | +| Start() | Start the OSS update for Android platform. | +| AddListenerDownloadProcess() | Monitor download progress. | +| AddListenerException() | Listen for internal exception information. | ### 🌴ParamsAndroid -**属性** - -**Url** string http的api服务端请求地址。 +**Properties** -**Apk** string 安卓apk名称。 +**Url**: string - The API server request address. -**CurrentVersion** string 当前版本。 +**Apk**: string - The Android apk name. -**Authority** string apk作者。 - -**VersionFileName** string 版本文件名称。 +**CurrentVersion**: string - The current version. +**Authority**: string - The apk author. +**VersionFileName**: string - The version file name. ### 🌼Start() -**方法** +**Method** -开始针对安卓平台的OSS更新。 +Start the OSS update for the Android platform. ```c# public static async Task Start(ParamsAndroid parameter) where TStrategy : AbstractStrategy, new(); ``` +**Parameter Type** +ParamsAndroid: Update configuration parameters for the Android platform. For detailed content, refer to this document 🌴ParamsAndroid. -**参数类型** - -ParamsAndroid 安卓平台的跟新配置参数,详细内容参考本文档 🌴ParamsAndroid。 - - - -**参数** - -**parameter** ParamsAndroid 安卓平台的跟新配置参数。 - +**Parameter** +**parameter**: ParamsAndroid - Update configuration parameters for the Android platform. ### 🌼AddListenerDownloadProcess() -**方法** +**Method** -监控下载进度。 +Monitor download progress. ```c# public static void AddListenerDownloadProcess(Action callbackAction); ``` +**Parameter Type** +**sender**: object -**参数类型** - -**sender** object +Operation handle. -操作句柄。 +**args**: OSSDownloadArgs -**args** OSSDownloadArgs +Download progress notification parameters. -下载进度通知参数。 - - - -**参数** +**Parameter** ```c# callbackAction Action ``` -监听当前版本下载进度事件回传参数。 - - +Listen for current version download progress event callback parameters. ### 🌼AddListenerException() -**方法** +**Method** -监听内部异常信息。 +Listen for internal exception information. ```c# public static void AddListenerException(Action callbackAction); ``` +**Parameter Type** +**sender**: object -**参数类型** - -**sender** object - -操作句柄。 - -**args** ExceptionEventArgs +Operation handle. -更新异常参数。 +**args**: ExceptionEventArgs +Update exception parameters. - -**参数** +**Parameter** ```c# callbackAction Action ``` -监听当前版本下载进度事件回传参数。 - - +Listen for current version download progress event callback parameters. -### 适用于 +### Applies to -| 产品 | 版本 | +| Product | Version | | --------- | ---------------- | -| .NET | 7、8、9 | +| .NET | 7, 8, 9 | | .NET MAUI | .NET 8 - Android | \ No newline at end of file diff --git a/website/docs/doc/GeneralUpdate.PacketTool.md b/website/docs/doc/GeneralUpdate.PacketTool.md index c2642a8..a821f0c 100644 --- a/website/docs/doc/GeneralUpdate.PacketTool.md +++ b/website/docs/doc/GeneralUpdate.PacketTool.md @@ -2,35 +2,31 @@ sidebar_position: 11 --- -### 简介 +### Introduction -工具使用.NET WPF(.NET 8)进行开发,目前只支持Windows / Linux(Ubuntu) 桌面端使用。 +The tool is developed using .NET WPF (.NET 8) and currently supports desktop usage on Windows and Linux (Ubuntu) platforms. -- 仓库地址: +- Repository Links: - https://gitee.com/GeneralLibrary/GeneralUpdate.Tools - https://github.com/GeneralLibrary/GeneralUpdate.Tools -![](imgs\tool.png) +![](imgs/tool.png) +#### Features Provided +| Feature | Supported | Remarks | +| ----------------------------------- | --------- | ------------------------------------------------------------ | +| Delta Update Package Generation | Yes | Compares the previous version with the current version to identify files that need updating or new files added. | +| Automatic Upload of Update Packages | Yes | Automatically uploads the generated delta update package to the server. | +| Editable Selection of Delta Files | Yes | Allows visual inspection of the contents of the delta package and selection of files for packaging. | -#### 提供功能 +#### Usage Example -| 功能 | 支持 | 备注 | -| ------------------ | ---- | ------------------------------------------------------------ | -| 差分更新包生成 | 是 | 根据上一个版本和当前版本进行对比找出需要更新的文件或新添加文件。 | -| 自动上传更新包 | 是 | 将生成好的差分更新包自动上传至服务器。 | -| 可编辑选择差分文件 | 是 | 可视化查看差分包的打包内容,并可选择打包文件。 | +Source path: Represents the folder path of the previous version. +Target path: Represents the folder path of the current version. +Patch path: Represents the path where the final delta package is generated. -#### 使用示例 - -Source path:表示上一个版本的文件夹路径。 - -Target path:表示当前版本文件夹路径。 - -Patch path:表示最终生成差分包的路径。 - -Build:通过递归比对Source path和Target path文件夹下所有的工程文件(DLL,exe...等),通过二进制差分检查、增量检查分析出需要更新的文件列表按照文件夹结构,打包更新包。 \ No newline at end of file +Build: Recursively compares all project files (DLL, exe, etc.) in the Source path and Target path folders. It analyzes the list of files that need updating using binary delta checks and incremental checks, and then packages the update package according to the folder structure. \ No newline at end of file diff --git a/website/docs/doc/Merchandise.md b/website/docs/doc/Merchandise.md new file mode 100644 index 0000000..0760fac --- /dev/null +++ b/website/docs/doc/Merchandise.md @@ -0,0 +1,17 @@ +--- +sidebar_position: 0 +--- + +--- + +## Physical Merchandise + +Oh no! Juster and Bowl seem to have fallen into the portal of Planet Walker. Who can help escape this escape planet!!! Help.... + +![](imgs\justerbowl.jpg) + +Open the Taobao App and scan the QR code at the bottom left of the image to find the products. + +| Crew Neck Sweatshirt | Office Pillow | +| -------------------- | --------------------- | +| ![](imgs\yifu.jpg) | ![](imgs\baozhen.jpg) | \ No newline at end of file diff --git a/website/docs/doc/Q&A.md b/website/docs/doc/Q&A.md index c353c64..fdb6128 100644 --- a/website/docs/doc/Q&A.md +++ b/website/docs/doc/Q&A.md @@ -2,15 +2,17 @@ sidebar_position: 12 --- +### Support and Community +For any issues or questions regarding GeneralUpdate, you can refer to the following resources: -- Gitee issues : https://gitee.com/GeneralLibrary/GeneralUpdate/issues -- Github issues : https://github.com/GeneralLibrary/GeneralUpdate/issues - -- .NET技术交流群 341349660 -- GeneralUpdate交流群 748744489 -- 微信群 +- Gitee Issues: [https://gitee.com/GeneralLibrary/GeneralUpdate/issues](https://gitee.com/GeneralLibrary/GeneralUpdate/issues) +- GitHub Issues: [https://github.com/GeneralLibrary/GeneralUpdate/issues](https://github.com/GeneralLibrary/GeneralUpdate/issues) +Join our community to discuss .NET technologies and GeneralUpdate: +- .NET Technology Discussion Group: 341349660 +- GeneralUpdate Discussion Group: 748744489 +- WeChat Group ![gitee_issues](imgs/gitee_issues.png) \ No newline at end of file diff --git a/website/docs/doc/UpgradeHub.md b/website/docs/doc/UpgradeHub.md index c0d6bbc..157959c 100644 --- a/website/docs/doc/UpgradeHub.md +++ b/website/docs/doc/UpgradeHub.md @@ -2,48 +2,46 @@ sidebar_position: 7 --- -### 定义 +### Definition -命名空间:GeneralUpdate.ClientCore.Hubs +Namespace: GeneralUpdate.ClientCore.Hubs -程序集:GeneralUpdate.ClientCore.dll +Assembly: GeneralUpdate.ClientCore.dll -UpgradeHubService是基于SignalR实现的推送更新版本信息的机制,可以实现一对一和一对多的推送。 +The `UpgradeHubService` is a mechanism based on SignalR for pushing updated version information. It supports both one-to-one and one-to-many push notifications. ```c# public class UpgradeHubService : IUpgradeHubService ``` -nuget安装 +NuGet Installation ```shell NuGet\Install-Package GeneralUpdate.ClientCore -Version 1.0.0 ``` +### Example - -### 示例 - -以下示例定义方法,包含VersionHub使用。 +The following example defines methods that include the use of `VersionHub`. ```c# -//1.常规使用方式 +//1. General usage var hub = new UpgradeHubService("http://localhost:5000/UpgradeHub" , null,"dfeb5833-975e-4afb-88f1-6278ee9aeff6"); hub.AddListenerReceive((message) => { - //message目前限定为Packet对象的json字符串 + // The message is currently limited to a JSON string of the Packet object Debug.WriteLine(message); }); await hub.StartAsync(); -//2.在拥有依赖注入能力的项目中也可以依赖注入,例如:Prism +//2. In projects with dependency injection capability, you can also use dependency injection, for example: Prism protected override void RegisterTypes(IContainerRegistry containerRegistry) { // Register Services - ontainerRegistry.Register(); + containerRegistry.Register(); } public MainWindowViewModel(IUpgradeHubService service) @@ -53,67 +51,55 @@ public MainWindowViewModel(IUpgradeHubService service) } ``` -**(1)点对点推送** +**(1) Point-to-point push** ![](imgs/maui_windows_push_version.png) - - -**(2)一次推送更新给多个客户端** +**(2) Push updates to multiple clients at once** ![push_version_mutil](imgs/push_version_mutil.png) +### Notes +`UpgradeHubService` provides the functionality to receive server push messages. -### 注解 - -UpgradeHubService提供接收服务器推送消息功能。 - - - -#### 方法 - -| Method | | -| ------------------------ | ---------------------------------- | -| AddListenerReceive() | 实时订阅服务端推送的最新版本信息。 | -| AddListenerOnline() | 在线、离线监听通知 | -| AddListenerReconnected() | 重新连接通知 | -| AddListenerClosed() | 关闭连接通知 | -| StartAsync() | 开启连接 | -| StopAsync() | 暂停连接 | -| DisposeAsync() | 释放Hub对象实例 | - +#### Methods +| Method | Description | +| ------------------------ | ------------------------------------------------------------ | +| AddListenerReceive() | Subscribe to the latest version info pushed by the server in real-time. | +| AddListenerOnline() | Listen for online and offline notifications | +| AddListenerReconnected() | Notification for reconnection | +| AddListenerClosed() | Notification for connection closure | +| StartAsync() | Start the connection | +| StopAsync() | Pause the connection | +| DisposeAsync() | Release the Hub object instance | ### 🌼UpgradeHubService() -**构造函数** +**Constructor** -Hub构造函数初始化。 +Initializes the Hub constructor. ```c# UpgradeHubService(string url, string? token = null, string? appkey = null) ``` - - -**参数** +**Parameters** ```c# -url string Hub的订阅地址。 +url string The subscription address of the Hub. -token string Id4的认证流程所需要用到的token字符串。 +token string The token string used in the Id4 authentication process. -appkey string 客户端密钥,唯一标识推荐值为Guid,可随机生成。 +appkey string The client key, uniquely identified, recommended value is a Guid, which can be randomly generated. ``` +### Applicable to - -### 适用于 - -| 产品 | 版本 | +| Product | Version | | -------------- | ------------- | -| .NET | 5、6、7、8、9 | +| .NET | 5, 6, 7, 8, 9 | | .NET Framework | 4.6.1 | | .NET Standard | 2.0 | | .NET Core | 2.0 | diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index 0fe1a00..765adbf 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -30,16 +30,14 @@ const config = { // useful metadata like html lang. For example, if your site is Chinese, you // may want to replace "en" with "zh-Hans". i18n: { - defaultLocale: 'zh', - locales: ['zh','en'], + defaultLocale: 'zh-Hans', + locales: ['zh-Hans','en'], localeConfigs: { - zh: { + "zh-Hans": { label: '中文', - direction: 'ltr', }, - en: { + "en": { label: 'English', - direction: 'ltr', } } }, diff --git a/website/i18n/en/docusaurus-plugin-content-docs/current/docs/doc/Component Introduction.md b/website/i18n/en/docusaurus-plugin-content-docs/current/docs/doc/Component Introduction.md index 2be6137..005a5f2 100644 --- a/website/i18n/en/docusaurus-plugin-content-docs/current/docs/doc/Component Introduction.md +++ b/website/i18n/en/docusaurus-plugin-content-docs/current/docs/doc/Component Introduction.md @@ -8,7 +8,7 @@ sidebar_position: 2 ### 1. What is GeneralUpdate? -GeneralUpdate is an open-source, cross-platform automatic update component based on .NET Standard 2.0. A small star is your greatest support, motivating us to keep updating and maintaining. ENENENENENENEN +GeneralUpdate is an open-source, cross-platform automatic update component based on .NET Standard 2.0. A small star is your greatest support, motivating us to keep updating and maintaining. ##### Project Open Source Repository Address @@ -69,7 +69,7 @@ Customized secondary development, technical consultation, open-source project re Before using GeneralUpdate, we need to understand some basic concepts in the system. - ![](imgs/client_server_upgrade.jpg) +![](imgs/client_server_upgrade.jpg) - Client: Refers to your main application, which is the client to be updated. It can also be understood as the company's product. - Upgrade: Refers to the upgrade program, which will be an independent process. It needs to be placed in the same directory as the Client and should not be associated with any business or design during use (or coding), maintaining independent reference. @@ -175,4 +175,4 @@ The size of the project has exceeded the scope of individual maintenance, and de Thank you! -​ Author: Juster \ No newline at end of file +​ Author: Juster \ No newline at end of file diff --git a/website/i18n/zh/code.json b/website/i18n/zh-Hans/code.json similarity index 100% rename from website/i18n/zh/code.json rename to website/i18n/zh-Hans/code.json diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current.json b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current.json similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current.json rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current.json diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/Component Introduction.md b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/Component Introduction.md similarity index 99% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/Component Introduction.md rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/Component Introduction.md index b24395b..26ba7b0 100644 --- a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/Component Introduction.md +++ b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/Component Introduction.md @@ -8,7 +8,7 @@ sidebar_position: 2 ### 1.GeneralUpdate是什么? -GeneralUpdate是一款基于.NET Standard2.0开源多平台自动升级组件。一个小小star是您对我最大的支持,让我们保持更新维护的动力。 +GeneralUpdate是一款基于.NET Standard2.0开源多平台自动升级组件。一个小小star是您对我最大的支持,让我们保持更新维护的动力。选择了中文语言!!!! ##### 本项目开源仓库地址 diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/GeneralClient.OSS.md b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/GeneralClient.OSS.md similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/GeneralClient.OSS.md rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/GeneralClient.OSS.md diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/GeneralSpacestation.md b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/GeneralSpacestation.md similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/GeneralSpacestation.md rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/GeneralSpacestation.md diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/GeneralUpdate.Bowl.md b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/GeneralUpdate.Bowl.md similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/GeneralUpdate.Bowl.md rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/GeneralUpdate.Bowl.md diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/GeneralUpdate.ClientCore.md b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/GeneralUpdate.ClientCore.md similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/GeneralUpdate.ClientCore.md rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/GeneralUpdate.ClientCore.md diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/GeneralUpdate.Common.md b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/GeneralUpdate.Common.md similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/GeneralUpdate.Common.md rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/GeneralUpdate.Common.md diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/GeneralUpdate.Core.md b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/GeneralUpdate.Core.md similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/GeneralUpdate.Core.md rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/GeneralUpdate.Core.md diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/GeneralUpdate.Differential.md b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/GeneralUpdate.Differential.md similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/GeneralUpdate.Differential.md rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/GeneralUpdate.Differential.md diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/GeneralUpdate.Maui.OSS.md b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/GeneralUpdate.Maui.OSS.md similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/GeneralUpdate.Maui.OSS.md rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/GeneralUpdate.Maui.OSS.md diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/GeneralUpdate.PacketTool.md b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/GeneralUpdate.PacketTool.md similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/GeneralUpdate.PacketTool.md rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/GeneralUpdate.PacketTool.md diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/Q&A.md b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/Q&A.md similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/Q&A.md rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/Q&A.md diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/UpgradeHub.md b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/UpgradeHub.md similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/UpgradeHub.md rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/UpgradeHub.md diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/_category_.json b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/_category_.json similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/_category_.json rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/_category_.json diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/GeneralUpdate_h2.png b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/GeneralUpdate_h2.png similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/GeneralUpdate_h2.png rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/GeneralUpdate_h2.png diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/baozhen.jpg b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/baozhen.jpg similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/baozhen.jpg rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/baozhen.jpg diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/bowl.jpg b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/bowl.jpg similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/bowl.jpg rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/bowl.jpg diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/client_server_upgrade.jpg b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/client_server_upgrade.jpg similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/client_server_upgrade.jpg rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/client_server_upgrade.jpg diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/contact.png b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/contact.png similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/contact.png rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/contact.png diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/corporateclient1.png b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/corporateclient1.png similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/corporateclient1.png rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/corporateclient1.png diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/corporateclient2.png b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/corporateclient2.png similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/corporateclient2.png rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/corporateclient2.png diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/crash.jpg b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/crash.jpg similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/crash.jpg rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/crash.jpg diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/dump.png b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/dump.png similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/dump.png rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/dump.png diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/evtx.png b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/evtx.png similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/evtx.png rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/evtx.png diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/generalspacestation.png b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/generalspacestation.png similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/generalspacestation.png rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/generalspacestation.png diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/generalspacestation2.png b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/generalspacestation2.png similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/generalspacestation2.png rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/generalspacestation2.png diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/gitee_issues.png b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/gitee_issues.png similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/gitee_issues.png rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/gitee_issues.png diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/justerbowl.jpg b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/justerbowl.jpg similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/justerbowl.jpg rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/justerbowl.jpg diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/maui_android_upgrade.png b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/maui_android_upgrade.png similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/maui_android_upgrade.png rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/maui_android_upgrade.png diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/maui_windows_push_version.png b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/maui_windows_push_version.png similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/maui_windows_push_version.png rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/maui_windows_push_version.png diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/muti_donwload.png b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/muti_donwload.png similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/muti_donwload.png rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/muti_donwload.png diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/mybowl.jpg b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/mybowl.jpg similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/mybowl.jpg rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/mybowl.jpg diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/oss_flow.png b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/oss_flow.png similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/oss_flow.png rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/oss_flow.png diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/oss_maui_flow.png b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/oss_maui_flow.png similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/oss_maui_flow.png rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/oss_maui_flow.png diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/oss_util.png b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/oss_util.png similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/oss_util.png rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/oss_util.png diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/oss_version_json.png b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/oss_version_json.png similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/oss_version_json.png rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/oss_version_json.png diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/payment.jpg b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/payment.jpg similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/payment.jpg rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/payment.jpg diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/push_version_mutil.png b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/push_version_mutil.png similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/push_version_mutil.png rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/push_version_mutil.png diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/ruanzhu.png b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/ruanzhu.png similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/ruanzhu.png rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/ruanzhu.png diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/solution.png b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/solution.png similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/solution.png rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/solution.png diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/solution2.png b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/solution2.png similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/solution2.png rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/solution2.png diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/tool.png b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/tool.png similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/tool.png rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/tool.png diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/yifu.jpg b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/yifu.jpg similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/doc/imgs/yifu.jpg rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/imgs/yifu.jpg diff --git "a/website/docs/doc/\345\256\236\344\275\223\345\221\250\350\276\271\344\272\247\345\223\201.md" "b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/\345\256\236\344\275\223\345\221\250\350\276\271\344\272\247\345\223\201.md" similarity index 100% rename from "website/docs/doc/\345\256\236\344\275\223\345\221\250\350\276\271\344\272\247\345\223\201.md" rename to "website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/doc/\345\256\236\344\275\223\345\221\250\350\276\271\344\272\247\345\223\201.md" diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/guide/Driver.md b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/guide/Driver.md similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/guide/Driver.md rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/guide/Driver.md diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/guide/Dump.md b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/guide/Dump.md similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/guide/Dump.md rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/guide/Dump.md diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/guide/File occupancy.md b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/guide/File occupancy.md similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/guide/File occupancy.md rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/guide/File occupancy.md diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/guide/Permission.md b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/guide/Permission.md similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/guide/Permission.md rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/guide/Permission.md diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/guide/System infomation.md b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/guide/System infomation.md similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/guide/System infomation.md rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/guide/System infomation.md diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/guide/Systemlog.md b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/guide/Systemlog.md similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/guide/Systemlog.md rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/guide/Systemlog.md diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/guide/_category_.json b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/guide/_category_.json similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/guide/_category_.json rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/guide/_category_.json diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/guide/imgs/UAC.png b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/guide/imgs/UAC.png similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/guide/imgs/UAC.png rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/guide/imgs/UAC.png diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/quickstart/Quik start.md b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/quickstart/Quik start.md similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/quickstart/Quik start.md rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/quickstart/Quik start.md diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/quickstart/_category_.json b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/quickstart/_category_.json similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/quickstart/_category_.json rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/quickstart/_category_.json diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/quickstart/imgs/build.png b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/quickstart/imgs/build.png similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/quickstart/imgs/build.png rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/quickstart/imgs/build.png diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/quickstart/imgs/content.png b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/quickstart/imgs/content.png similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/quickstart/imgs/content.png rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/quickstart/imgs/content.png diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/quickstart/imgs/manager.png b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/quickstart/imgs/manager.png similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/quickstart/imgs/manager.png rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/quickstart/imgs/manager.png diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/quickstart/imgs/result.png b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/quickstart/imgs/result.png similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/quickstart/imgs/result.png rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/quickstart/imgs/result.png diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/quickstart/imgs/rundir.png b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/quickstart/imgs/rundir.png similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/quickstart/imgs/rundir.png rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/quickstart/imgs/rundir.png diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/quickstart/imgs/rundir2.png b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/quickstart/imgs/rundir2.png similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/quickstart/imgs/rundir2.png rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/quickstart/imgs/rundir2.png diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/quickstart/imgs/upgrade.png b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/quickstart/imgs/upgrade.png similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/quickstart/imgs/upgrade.png rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/quickstart/imgs/upgrade.png diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/releaselog/GeneralUpdateReleaselog.md b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/releaselog/GeneralUpdateReleaselog.md similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/releaselog/GeneralUpdateReleaselog.md rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/releaselog/GeneralUpdateReleaselog.md diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/releaselog/_category_.json b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/releaselog/_category_.json similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/releaselog/_category_.json rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/releaselog/_category_.json diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/releaselog/imgs/supporting_relationships.jpg b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/releaselog/imgs/supporting_relationships.jpg similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/releaselog/imgs/supporting_relationships.jpg rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/releaselog/imgs/supporting_relationships.jpg diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/releaselog/imgs/udpate_flow.jpg b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/releaselog/imgs/udpate_flow.jpg similarity index 100% rename from website/i18n/zh/docusaurus-plugin-content-docs/current/releaselog/imgs/udpate_flow.jpg rename to website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/releaselog/imgs/udpate_flow.jpg diff --git a/website/i18n/zh/docusaurus-theme-classic/footer.json b/website/i18n/zh-Hans/docusaurus-theme-classic/footer.json similarity index 100% rename from website/i18n/zh/docusaurus-theme-classic/footer.json rename to website/i18n/zh-Hans/docusaurus-theme-classic/footer.json diff --git a/website/i18n/zh/docusaurus-theme-classic/navbar.json b/website/i18n/zh-Hans/docusaurus-theme-classic/navbar.json similarity index 100% rename from website/i18n/zh/docusaurus-theme-classic/navbar.json rename to website/i18n/zh-Hans/docusaurus-theme-classic/navbar.json diff --git "a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/\345\256\236\344\275\223\345\221\250\350\276\271\344\272\247\345\223\201.md" "b/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/\345\256\236\344\275\223\345\221\250\350\276\271\344\272\247\345\223\201.md" deleted file mode 100644 index 090f4d8..0000000 --- "a/website/i18n/zh/docusaurus-plugin-content-docs/current/doc/\345\256\236\344\275\223\345\221\250\350\276\271\344\272\247\345\223\201.md" +++ /dev/null @@ -1,17 +0,0 @@ ---- -sidebar_position: 0 ---- - -## 实物周边产品 - -糟糕!Juster和Bowl似乎掉入了沃克星球的传送门,谁能帮忙逃离这个逃离星球!!!Help.... - -![](imgs\justerbowl.jpg) - - - -打开淘宝App,扫描图片左下方二维码即可找到商品。 - -| 圆领卫衣 | 办公抱枕 | -| ------------------ | --------------------- | -| ![](imgs\yifu.jpg) | ![](imgs\baozhen.jpg) | \ No newline at end of file