游戏变速齿轮-安卓系统下载

自动更新失败
2023年3月30日发(作者:linux系统好用吗)

基于VISUALC++客户端程序自动更新的应用研究

朱建凯;郑洪源;丁秋林

【摘要】信息管理系统常因客户端的更新不及时或不完备而导致系统运行故障.为

解决上述问题,对自动更新程序设计的原理和工作流程进行了研究分析,设计出具有

强制更新和断点续传功能的自动更新程序,并使用VisualC++编写代码实现了完

备的自动更新程序,并将该更新程序应用于某信息隐藏系统,取得了良好的效果.

【期刊名称】《计算机应用与软件》

【年(卷),期】2010(027)002

【总页数】3页(P172-173,187)

【关键词】VisualC++;程序设计;自动更新

【作者】朱建凯;郑洪源;丁秋林

【作者单位】南京航空航天大学信息科学与技术学院,江苏,南京,210016;南京航空

航天大学信息科学与技术学院,江苏,南京,210016;南京航空航天大学信息科学与技

术学院,江苏,南京,210016

【正文语种】中文

0引言

随着计算机网络的日益发展,企业信息管理系统越来越多地应用于企业的日常管理

和事务处理,大大提高了企业的办公效率。此类软件系统客户端多、分布广,企业

的网络管理人员技术水平参差不齐,这些都对C/S模式的信息管理系统客户端的

更新带来影响,常因更新的不及时或不完全而导致系统运行不正常甚至无法运行。

为此,在分析当前主流的软件系统更新方式的基础上提出了新的自动更新程序设计

方案,其主要功能就是当软件系统进行变更时,各客户端主动侦测其变更并自动完

成与服务器文件的同步。其特点就是服务器端文件可以不做成安装程序,而由客户

端根据自己的情况进行选择下载更新,并可应对软件系统复杂的目录结构和众多的

文件,实现强制更新和断点续传功能,确保客户端软件系统的完备性。下面将介绍

通过VisualC++编写程序来实现C/S模式信息管理系统的自动更新。

1系统设计原理及设计方案

当前常用的自动更新模式主要特点[1]是:①利用版本号控制版本升级。②更新后

的程序单独运行,不需要相互间同步。

经查阅资料及相关文献,归纳出C/S模式信息管理系统具有文件量大、更新频繁、

客户端散布面大且相互协同的特点[5],而当前的自动更新模式不适用于信息管

理系统[2,5],主要原因是:

①信息管理系统除了程序文件外还有数以千计的资料文件,如图像文件、模板文件、

声音文件、配置文件等等,而这些文件一般没有版本号,而且修改频繁,如果靠版

本号控制就只能手动修改更新信息文件,进而需要做大量的工作,然而客户的系统

维护人员不一定都能完成这项工作。而且在实际工作中,大部分客户都希望系统能

自动完成这项工作。

②客户端必须强制升级到最高版本,否则会导致系统的运行故障。比如在系统维护

时在数据库中的CLIENT表中添加一个非空的字段“EMAIL”而客户端在没有及时

更新数据模板文件,在此表中添加记录时就会导致系统错误;同样在打印报表时也

不会有此项内容。所以,在客户端登录系统时必须强制更新至最新版本。

鉴于上述原因本文提出了下面的自动更新程序设计方案。

1.1设计原理

从服务器下载版本信息文件,判断是否需要更新,如需要则生成需要更新的文件列

表,依次从服务器下载文件。其设计原理如图1所示。

图1自动更新程序设计原理

1.2设计方案

自动更新重要的是收集更新信息形成版本信息文件,服务器端设计程

序递归访问文件目录,并创建版本文件。客户端设计

程序从服务器获取版本文件,判断是否需要更新,若需要更新则

从服务器下载新文件。自动更新程序独立于主程序执行,更新程序须中止主程序运

行,更新成功后启动主程序。设计方案如图2所示。

图2自动更新程序设计方案

1)服务器端程序其功能就是扫描软件系统的目录结构并生成名称为

的版本文件,具体内容为:

(1)取得程序初始目录和文件下载的URL。

(2)取得软件系统的所有文件列表及修改时间。

(3)将文件信息写入版本文件。

(4)如果列表中还有文件就返回(3),否则结束程序。

2)客户端程序其功能就是与服务器建立链接完成软件系统的更新,具体操作为:

(1)下载版本文件,如果下载失败则更新失败。

(2)判断是否需要进行更新,如果需要更新则生成待更新文件列表,中断主程序的

运行;不需要更新则结束更新程序。

具体条件包括:

①链接是否成功;

②服务器端文件的修改时间是否大于客户端文件的修改时间;

③以上两条件全部满足,继续进行后续工作流程,否则,结束更新。

(3)依据待更新文件列表从服务器下载文件,并修改本地更新记录为断点续传提供

依据。

(4)判断是否还有文件需要更新,有则返回(3),否则执行(5)。

(5)结束更新程序,并启动主程序。

2自动更新程序设计

自动更新程序的实现方式有很多种,本文将通过API函数URLDownloadToFile()

实现网络文件的自动下载[2],用软件的方法对更新过程实施控制。

2.1服务器端程序设计

创建服务器端程序,其主要功能是收集服务器上信息管理系统的新版

本的程序及文件信息,并创建版本文件。具体步骤为:

①程序初始化操作。主要是取得当前路径和基本的URL地址。

②调用CBrowseDir类的函数递归扫描当前路径下的所有目录和文件,形成文件

信息列表,其结构如下:

③取文件信息列表的一个节点,以其相对路径与基本URL地址连接为文件下载

URL地址,将文件相对路径、修改时间及下载地址写入文件,结

构如下:

④判断文件信息列表是否为NULL,若为空程序结束,否则返回③执行。

2.2客户端程序设计

创建客户端程序,其主要功能是完成版本文件的下载,生成更新

文件列表,完成自动更新:

①下载版本文件。若下载失败则退出更新程序,判断程序如下:

②判断是否需要更新,若不需要更新则退出更新程序。调用CProcess类判断主程

序是否在运行,若在运行则中止其运行。

③按更新文件列表下载文件,并修改本地更新信息,直至全部文件下载成功。若下

载失败则提示下载失败退出更新程序。

④按冗余文件链表清除冗余文件。

⑤启动主程序。

3应用实例

该自动更新程序投入信息隐藏系统使用,运营近一年时间中,系统更新118次均

成功更新,未因客户端更新不及时或不完备而引发系统故障,运行情况如图3、图

4所示。

图3自动更新程序服务器端运行情况

图4自动更新程序客户端运行情况

4结语

应用本自动更新程序,每次软件系统更新,只需要服务器端的文件系统更新后运行

程序,就可以完成全部客户端的更新实现。极大地缩短了软件系统维

护升级工作的时间,大大提高了工作人员的效率。与类似软件相比有如下创新

点:①以文件修改时间作为是否下载的依据;②以INI文件模拟数据库存储文件信

息;③实现了单文件或多模块有选择性的更新。

通过实际应用,本文设计的自动更新程序有效地解决了上述信息管理系统客户端更

新存在的问题,实现了客户端的强制更新和断点续传,确保了客户端的完备性,同

时在并发用户增多的情况下,减轻了服务器的负荷,达到了设计要求。即可用于局

域网的更新,也可用于Internet上实现更新。

参考文献

[1]何航校,蒋兆远.一种改进的通用客户端自动升级模型及实现[J].兰州交通

大学学报,2005(8):110113.

[2]赵晓娥.用VC++实现程序的自动更新.西安文理学院学报:自然科学版,2006.

[3]杨传伟,孟凡荣.C/S客户端软件自动更新系统的设计与实现.计算机工程与设

计,2007(9).

[4]余俊伟.医院信息系统客户端应用软件自动更新的实现[J].中国医疗器械杂

志,2006.

[5]杨继家,张丽静.面向C/S模式下的客户端软件自动升级的实现[J].微计算

机应用,2005(5):290293.

更多推荐

自动更新失败