电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

如何实现软件在线升级


发布日期:2021/8/11
 

一、实现原理

一般来说Update分为客户端和服务器端两个组成部分,客户端接收服务器上的更新信息,并下载更新文件,然后完成一系列注册、配置等更新工作,全部自动化,不用人工操作。

根据笔者的经验,Update程序最好独立于主程序之外,也就是说有一个单独的Update.exe程序来执行更新操作,这样既可以直接更新主程序,也便于完成Update的“自身更新”。

首先,我们遇到的第一个问题是选择合适的开发工具。一般来说Update的功能并不复杂,只是完成下载更新的功能,所以本文就用VB语言编写代码。另外也可以选用一些成熟的Update组件,例如用.NET框架开发的应用程序更新组件AppUpdater等,都可以很方便地帮助我们而只需要编写极少的代码。

由于各种Update程序的种类繁多,本文主要介绍通用的一些特性以及适合个人编程、小型公司的Update经济方案,执行流程如下:

1.下载网站某个页面,根据页面内容获得最新版本号;

2.如果最新版本高于当前版本,则下载升级文件(一般为压缩包);

3.释放文件,并用最新文件替换旧文件完成升级。

按照这个最简化的方案,当开发者需要更新升级软件的时候,只用FTP上传更新文件即可。tW.WingWit.cOM好处是可以不必开发服务器端,更不用购买或租用昂贵的升级服务器。

OK,我们现在开始详细剖析Update的具体执行过程,软件界面如图。

二、穿透防火墙

首先,Update要对网络是否已经连通进行判断。笔者在这个问题上反复使用过多种方法:Ping某个IP地址、获取注册表键值、网卡连通判断等等,最终都不理想。原因在于IP地址可能变化、甚至有时候即使物理连通了,也不一定能够确保文件的下载更新。

笔者使用的方法是利用Microsoft Internet Controls控件访问开发者的官方首页来判断网络是否已经连通。代码如下:

Dim Network As Long

Private Sub Form_Load()

WebBrowser1.Navigate "http://www.boobsoft.com"

End sub

Private Sub WebBrowser1_DownloadComplete() '当Web页面载入完毕此事件激活

If Network = 0 Then

Label1.Caption = "正在升级,请稍后..."

Update '调用升级过程

End If

End Sub

Private Sub WebBrowser1_NavigateError(ByVal pDisp As Object, URL As Variant, Frame As Variant, StatusCode As Variant, Cancel As Boolean) '当Web页面浏览失败的时候此事件激活

Network = -1'必需此语句,在Update过程中要判断网络是否持续通畅

MsgBox "网络没有连通,或升级服务器临时关闭,请稍后再试。"

End Sub

小经验:Internet Controls控件的好处不仅是代码简单,它是微软官方控件,更重要的是可以直接穿透防火墙,节省了我们很多时间。

上一篇:无法播放视频怎么办

下一篇:注册表加锁的方法