前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >GeneralUpdate 9.0.0 发布内容

GeneralUpdate 9.0.0 发布内容

作者头像
JusterZhu
发布2025-01-23 20:54:46
发布2025-01-23 20:54:46
4400
代码可运行
举报
文章被收录于专栏:JusterZhuJusterZhu
运行总次数:0
代码可运行

1.项目介绍

GeneralUpdate是一款基于.NET Standard2.0开源跨平台自动升级组件。支持大部分现有的桌面客户端实现技术和.NET框架,也可以无UI运行。

2.开源生态融合

3.发布简报

  • 更新所有组件C#语法均升级至C#13。
  • 优化、重构、精简代码,以最少的代码实现功能降低代码阅读难度。
  • 简化了GeneralClientBootstrap的传入参数复杂度。
  • 移除Strategys参数设置,内置在组件内可自推断所在操作系统平台切换更新策略,开发者无需再关心更新策略设置。
  • 新增驱动更新、备份、安装功能。
  • 优化了自动升级流程,更新状态的四种工作流: 1.客户端需要升级、升级端需要升级 2.客户端不需要升级、升级端不需要升级 3.客户端不需要升级、升级端需要升级 4.客户端需要升级、升级端不需要升级
  • 如果更新失败的版本将会存储在本地,回滚之后再遇到失败版本则跳过更新。
  • GeneralUpdate的OSS功能目前仅支持windows,仅支持zip压缩格式。
  • 移除GeneralUpdateOSS通知所有事件。
  • 新增GeneralUpdate.Bowl组件
  • GeneralUpdate.Bowl包含回滚、监测、导出dump功能(Only windows,linux会陆续开放)。
  • 新增GeneralUpdate.Common组件
  • 移除GeneralUpdate.Zip组件
  • 移除GeneralUpdate.AspnetCore组件
  • 移除MultiDownloadProgressChangedEvent,将该事件的通知内容合并至MultiDownloadStatisticsEvent。
  • 移除遗言功能,由GeneralUpdate.Bowl代替。
  • 移除7z压缩格式支持,仅支持zip压缩格式。
  • 移除ProgressType几种工作模式通知事件参数。
  • 移除VersionHub,由UpgradeHubService替代(推送功能)。
  • 更新组件内所有Hash值相关校验、生成均为SHA256算法,移除MD5算法。
  • 新增更新前备份当前程序所有文件内容。
  • 支持Ubuntu操作系统。
  • 兼容并支持AOT编译,移除或重构所有不利于AOT编译或使用的代码。
  • 所有组件版本号跟随.NET Core的框架版本号。并且统一共享一个版本号,不再各自维护单独的版本号。
  • 更新Sample示例更新,使用bat脚本一键生成。
  • 修复了若干issue中提出的bug。
  • 转移GeneralUpdate.Maui.OSS和GeneralUpdate.OSS类库至新仓库GeneralUpdate.Maui。
  • GeneralUpdate.Differential移除GeneralUpdate.Zip引用,并且移除所有压缩包处理能力。
  • 新增升级流程上报服务器升级状态,升级状态为待更新、更新失败、更新成功。
  • 重构GeneralUpdate.Tools为Avalonia版本,适配在Linux操作系统上制作差分补丁包。

4.快速启动

在线文档地址:https://www.justerzhu.cn/

源码仓库:https://github.com/GeneralLibrary/GeneralUpdate

示例仓库:https://github.com/GeneralLibrary/GeneralUpdate-Samples

Step1

在Github上下载Sample仓库,使用示例前请确保本地安装了.NET 8的运行环境。

仓库目录内容如下:

名称

说明

Client

主客户端示例程序

Server

服务端示例程序

StartManager

更新流程控制台

Upgrade

升级端示例程序

process.bat

无需关注

resource.bat

无需关注

start.cmd

启动更新示例的脚本,一切从它开始

Step2

找到文件目录,并双击(每次启动start.cmd脚本都会重置本地目录所以无需手动管理文件目录):

代码语言:javascript
代码运行次数:0
复制
...\GeneralUpdate-Samples\src\start.cmd

如下图所示,自动开始编译并拷贝所有相关项目的bin目录到app目录下:

代码语言:javascript
代码运行次数:0
复制
...\GeneralUpdate-Samples\src\run\app

这时候就会出现StartManager.exe的界面,所有的选项均为字面意思,我们先别着急输入1这时候先看看app目录更新之前的装备后续方便我们验证更新结果。

我们进入到app目录之后,可以看到这是没有升级之前的目录。

Step3

检查完app目录之后:

  • 输入选项1然后回车
  • 服务端示例程序启动
  • 主客户端示例程序启动,开始请求更新(主客户端程序更新完成之后会自动关闭)。

看到主客户端程序自动关闭,我们再去检查一下run\app目录。会发现多了一个备份目录“app-1.0.0.0”和一个“Congratulations on the update.txt”。

看到这里代表您已经成功的完成了一次升级,Congratulations!

5.GeneralUpdate.Bowl组件

示例

以下示例定义方法,包含Bowl使用。

代码语言:javascript
代码运行次数:0
复制
var installPath = AppDomain.CurrentDomain.BaseDirectory;
var lastVersion = "1.0.0.3";
var processInfo = new MonitorParameter
{
    ProcessNameOrId = "JsonTest.exe",
    DumpFileName = $"{lastVersion}_fail.dmp",
    FailFileName = $"{lastVersion}_fail.json",
    TargetPath = installPath,
    FailDirectory = Path.Combine(installPath, "fail", lastVersion),
    BackupDirectory = Path.Combine(installPath, lastVersion),
    WorkModel = "Normal"
};
Bowl.Launch(processInfo);

捕获

如果监控到崩溃闪退将会在运行目录下生成:

  • 📒Dump文件(1.0.0.*_fail.dmp)
  • 📒升级包版本信息(1.0.0.*_fail.json)
  • 📒驱动信息(driverInfo.txt)
  • 📒操作系统信息/硬件信息(systeminfo.txt)
  • 📒系统事件日志(systemlog.evtx)

导出到“fail”目录下并根据版本号区分文件夹。

(1)x.0.0.*_fail.dmp
(2)x.0.0.*_fail.json
代码语言:javascript
代码运行次数:0
复制
{
 "Parameter": {
  "TargetPath": "D:\\github_project\\GeneralUpdate\\src\\c#\\Generalupdate.CatBowl\\bin\\Debug\\net9.0\\",
  "FailDirectory": "D:\\github_project\\GeneralUpdate\\src\\c#\\Generalupdate.CatBowl\\bin\\Debug\\net9.0\\fail\\1.0.0.3",
  "BackupDirectory": "D:\\github_project\\GeneralUpdate\\src\\c#\\Generalupdate.CatBowl\\bin\\Debug\\net9.0\\1.0.0.3",
  "ProcessNameOrId": "JsonTest.exe",
  "DumpFileName": "1.0.0.3_fail.dmp",
  "FailFileName": "1.0.0.3_fail.json",
  "WorkModel": "Normal",
  "ExtendedField": null
 },
 "ProcdumpOutPutLines": [
        "ProcDump v11.0 - Sysinternals process dump utility",
        "Copyright (C) 2009-2022 Mark Russinovich and Andrew Richards",
        "Sysinternals - www.sysinternals.com", 
        "Process:               JsonTest.exe (19712)", 
        "Process image:  D:\\github_project\\GeneralUpdate\\src\\c#\\Generalupdate.CatBowl\\bin\\Debug\\net9.0\\JsonTest.exe", "CPU threshold:         n/a", 
        "Performance counter:   n/a", "Commit threshold:      n/a",
        "Threshold seconds:     n/a", "Hung window check:     Disabled", "Log debug strings:     Disabled", 
        "Exception monitor:     Unhandled", "Exception filter:      [Includes]", 
        "                       *", 
        "                       [Excludes]", 
        "Terminate monitor:     Disabled", 
        "Cloning type:          Disabled", 
        "Concurrent limit:      n/a", 
        "Avoid outage:          n/a", 
        "Number of dumps:       1", 
        "Dump folder:           D:\\github_project\\GeneralUpdate\\src\\c#\\Generalupdate.CatBowl\\bin\\Debug\\net9.0\\fail\\1.0.0.3\\", 
        "Dump filename/mask:    1.0.0.3_fail", 
        "Queue to WER:          Disabled", "Kill after dump:       Disabled", 
        "Press Ctrl-C to end monitoring without terminating the process.", 
        "[19:05:23] Exception: E0434352.CLR", "[19:05:23] Unhandled: E0434352.CLR", 
        "[19:05:23] Dump 1 initiated: D:\\github_project\\GeneralUpdate\\src\\c#\\Generalupdate.CatBowl\\bin\\Debug\\net9.0\\fail\\1.0.0.3\\1.0.0.3_fail.dmp", 
        "[19:05:23] Dump 1 writing: Estimated dump file size is 62 MB.", 
        "[19:05:23] Dump 1 complete: 62 MB written in 0.1 seconds", 
        "[19:05:23] Dump count reached."]
}
(3)driverInfo.txt
代码语言:javascript
代码运行次数:0
复制
模块名       显示名称               描述                   驱动程序类型  启动模式   状态       状态       接受停止    接受暂停     分页缓冲池 代码(字节) BSS(字  链接日期               路径                                             Init(字节)
============ ====================== ====================== ============= ========== ========== ========== =========== ============ ========== ========== ======= ====================== ================================================ ==========   
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     
360AntiHijac 360Safe Anti Hijack Se 360Safe Anti Hijack Se Kernel        System     Running    OK         TRUE        FALSE        4,096      73,728     0       5/8/2024 12:19:52 PM   C:\Windows\system32\Drivers\360AntiHijack64.sys  4,096     
360AntiSteal 360Safe Anti Steal Fil 360Safe Anti Steal Fil Kernel        System     Running    OK         TRUE        FALSE        4,096      20,480     0       4/18/2024 3:58:04 PM   C:\Windows\system32\Drivers\360AntiSteal64.sys   8,192     
360Box64     360Box mini-filter dri 360Box mini-filter dri File System   System     Running    OK         TRUE        FALSE        0          225,280    0       8/7/2024 11:50:19 AM   C:\Windows\system32\DRIVERS\360Box64.sys         12,288    

//...
(4)systeminfo.txt
代码语言:javascript
代码运行次数:0
复制
主机名:           ****
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 个处理器。
                  [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 个修补程序。
                  [01]: KB504****
                  [02]: KB502****
                  [03]: KB503****
                  [04]: KB503****
                  [05]: KB504****
                  [06]: KB504****
网卡:             安装了 3 个 NIC。
                  [01]: Intel(R) Ethernet Connection (**) I***-V
                      连接名:      以太网
                      启用 DHCP:   是
                      DHCP 服务器: 192.168.**.**
                      IP 地址
                        [01]: 192.168.**.**
                        [02]: ***::2640:***:****:****
                  [02]: VMware Virtual Ethernet Adapter for VMnet1
                      连接名:      VMware Network Adapter VMnet1
                      启用 DHCP:   是
                      DHCP 服务器: 192.168.**.**
                      IP 地址
                        [01]: 192.168.**.**
                        [02]: ***::9b3:***,***:****
                  [03]: VMware Virtual Ethernet Adapter for VMnet8
                      连接名:      VMware Network Adapter VMnet8
                      启用 DHCP:   是
                      DHCP 服务器: 192.168.**.**
                      IP 地址
                        [01]: 192.***,***:****
                        [02]: fe80::***:***:***:****
Hyper-V 要求:     已检测到虚拟机监控程序。将不显示 Hyper-V 所需的功能。

//...
(5)systemlog.evtx

6.Ubuntu、AOT兼容

7.GeneralSpacestation

该项目提供补丁包管理、补丁包制作、产品线、分组、客户端、升级验证、更新版本推送、升级状态追踪等能力,帮助企业更好管理升级体系。(本项目全线使用Semi.Avalonia开源控件库实现,且均支持AOT)

工具模块

升级模块

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JusterZhu 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.项目介绍
  • 2.开源生态融合
  • 3.发布简报
  • 4.快速启动
  • Step1
  • Step2
  • Step3
  • 5.GeneralUpdate.Bowl组件
    • 示例
    • 捕获
      • (1)x.0.0.*_fail.dmp
      • (2)x.0.0.*_fail.json
      • (3)driverInfo.txt
      • (4)systeminfo.txt
      • (5)systemlog.evtx
  • 6.Ubuntu、AOT兼容
  • 7.GeneralSpacestation
    • 工具模块
    • 升级模块
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档