当前位置:首页 > 网络技术 > Win技巧 > 正文内容

七天入门C#上位机——第七天:能远程升级打补丁你说香不香

admin2年前 (2023-02-28)Win技巧107

对于一个优秀的PC桌面应用程序而言,自动升级功能是必不可少的,目前应用程序主流的自动升级策略是重新下载安装包安装整个客户端,这种方法简单易用,但缺点也很明显,比如,即使整个客户端有10G,而本次更新仅仅只是修改了一个1k大小的dll,那意味着为了更新1k的修改内容要重新下载10G的全部内容,这显然极大地浪费了资源,延长了升级了时间。本文介绍一种基于OAUS的自动升级系统,相关背景、使用方法;

一.OAUS的主要功能

在上述的场景中,在使用自动升级时,我们的目标是只更新被修改了的那一小部分的dll,使用OAUS自动升级系统可以轻松地做到这一点。OAUS自动升级系统可以对被分发的客户端程序中的每个文件进行版本管理,每次升级的基础单元不再是整个客户端程序,而是其中的单个文件。针对单个文件的更新,包括三种形式:

(1)修改文件。

(2)删除文件。

(3)新增文件。

二.OAUS的使用

1.OAUS的结构

OAUS提供了可直接执行的服务端程序AutoUpdaterSystem.Server.exe和客户端程序AutoUpdater.exe,OAUS服务端的目录结构如下所示:

OAUS的客户端与服务器之间是通过TCP通信的,需要在配置文件中配置TCP端口提供自动升级服务。

FileFolder文件夹初始是空的,其用于部署被分发的程序的各个文件的最新版本。注意,其下的文件结构一定要与被分发的程序正常部署后的结构完全一致 -- 即相当于在FileFolder文件夹下部署一个被分发的程序。

      OAUS客户端的目录结构如下:

      

可以在AutoUpdater.exe.config配置文件中配置OAUS服务器的IP、端口等信息,其内容如下所示:

image.png


 请注意配置的CallbackExeName,其表示当升级完成之后,将启动分发程序的exe的名称。CallbackExeName配置的为什么是名称?这是因为使用和部署OAUS客户端时是有要求的:

(1)被分发的程序的可执行文件exe必须位于部署目录的根目录。

(2)OAUS的客户端(即整个AutoUpdater文件夹)也必须位于这个根目录。

如此,根据上述的两个约定,再结合服务端的FileFolder文件夹的结构,当服务端更新一个文件时,AutoUpdater便可以确定该文件在客户端机器上的绝对路径。

2. OAUS自动升级流程 

(1)运行OAUS服务端。     

(2)将被分发的客户端程序的所有内容放到OAUS服务端的FileFolder文件夹下,其结构与客户端程序正常部署后的结构要完全一致。

(3)使用OAUS服务端为被分发的客户端程序的每个文件生成默认版本号,并创建版本信息配置文件UpdateConfiguration.xml。

(4)将UpdateConfiguration.xml添加到OAUS的客户端程序中。

(5)在创建被分发的客户端的安装程序时,将OAUS的客户端打包进去,并将其直接部署在运行目录下。

如此,准备工作就完成了,当客户端通过安装包安装好。

6)当我们因为文件被修改有新的版本要发布时,那么可以这样做:

      a.将修改后的文件拷贝到OAUS服务端的FileFolder文件夹下的正确位置(或覆盖旧的文件)。

      b.在OAUS服务端打开【文件版本信息】窗体,双击被修改文件所对应的Row,在弹出的窗体上修改对应文件的版本号,将版本号的数值增加。(如果是删除旧文件或添加新文件,此处也可进行相应的操作)

(7)如此,当客户端再启动AutoUpdater.exe时,就会自动升级,更新那些发生变化的文件。以下是AutoUpdater.exe运行起来后的截图。

(8)当升级完成后,将启动前述的OAUS客户端配置文件中配置的回调exe。

(9)OAUS客户端会在日志文件UpdateLog.txt(位于AutoUpdater的文件夹下,在OAUS客户端首次运行时自动生成该文件)中,记录每次自动升级的情况。

(10)如果升级的过程中,与服务端连接中断,则会自动重连,在重连成功后,将启动断点续传。


扫描二维码推送至手机访问。

版权声明:本文由梦魁网络资源站发布,如需转载请注明出处。

本文链接:https://family.monkui.com:39/?id=1010

分享给朋友:

相关文章

Win10笔记本电脑如何变身WiFi热点

Win10笔记本电脑如何变身WiFi热点

笔记本电脑都是具有移动WiFi上网功能的,那么win10系统还可以将电脑作为热点,分享给其他移动设备,最多8台。下面就来说说如何操作:1、首先点击“windows”标志,即常说的“开始”,然后点“设置”,然后选择“网络和Internet”,...

2023年最新最全 VSCode 插件推荐!

2023年最新最全 VSCode 插件推荐!

Visual Studio Code 是由微软开发的一款免费的、针对于编写现代Web和云应用的跨平台源代码编辑器。它包含了一个丰富的插件市场,提供了很多实用的插件。下面就来分享 2023 年前端必备的 VS Code 插件!前端框架ES7+...

【网盘聚合神器】支持百度(不限速)、阿里、天翼、迅雷、蓝奏、谷歌等29款网盘

【网盘聚合神器】支持百度(不限速)、阿里、天翼、迅雷、蓝奏、谷歌等29款网盘

  百度网盘的限速可能会让你转战阿里云盘,但是阿里云盘的缺点在于不能分享,网络上的资源都是通过各类网盘来分享的,这样就会让你可能同时拥有不同网盘的账号。  那么我们有没有一款工具,可以将这些网盘资源聚合一下,把所有的网盘都挂载在电脑上,当做...

七天入门C#上位机——第六天:如何打包软件制作安装包

七天入门C#上位机——第六天:如何打包软件制作安装包

C#编写好程序后需要进行程序打包,个人觉得C#自带程序打包工具使用复杂,这里推荐一个好用的程序打包工具Inno Setup,Inno setup是一个免费、开源、简单的打包软件。这个软件足够简单,一分钟就完成打包。这个软件也足够强大,你想实...

七天入门C#上位机——第四天:动态库大乱斗

七天入门C#上位机——第四天:动态库大乱斗

有句古话叫工欲善其事必先利其器,意思就是想要做好一件事情,必须要先磨炼好工具,有了好的工具才能够做到事半功倍的效果;开发上位机也是这样,要想把上位机项目做的既好又高效,好的工具是必不可少的,下面介绍上位机开发中常见的几个模块中用到的动态库工...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。