软件升级程序的设计与实现 -计算机论文-论文中心

来源:百度文库 编辑:神马文学网 时间:2024/05/11 08:55:55

摘要文章从制作软件升级程序的必要性出发,首先,介绍了升级程序所完成的功能,接着阐明了升级程序的设计思路,最后通过具体的设计步骤实现了一个简单的升级程序。
关键词软件升级;升级程序;客户端;服务器端;配置文件
中图分类号TP311文献标识码A文章编号1008-1151(2006)05-0084-02

一、必要性
软件升级程序,顾名思义就是对用户正在使用的软件系统或程序进行升级。其实大家在平常学习生活中已经接触到了很多升级程序,例如腾讯公司的OICQ即时通讯软件,大家有没有注重到有时候点击运行的时候,会弹出一个对话框,如“软件已经更新,您使用的版本已经过时,请用户及时升级”之类的提示。有时甚至到了不升级就不能使用的的地步。微软的Windows操作系统是大家再熟悉不过的吧,它美观漂亮的图形界面,加上简单易用的特性给大家留下了深刻的印象。这样的系统也会用到升级程序吗?回答是肯定的。其实微软天天都在更新,上网的用户就会知道,网上病毒横行已经不是什么稀奇事了,弄不好就会中了木马等黑客程序,微软的操作系统自然成为广大黑客的攻击目标,因此每隔一段时间微软就会对自己的系统打上些“补丁”,以确保自身系统的安全,保证用户的机器不被“黑掉”。
二、升级程序的功能
升级程序概括起来有两个最大的用途:
第一,发现已使用的程序存在BUG或安全隐患,用升级程序来修补。
第二,程序增加了新的功能或是对原来功能有所改进和优化等,用升级程序来实现客户端的升级更新。
说了这么多,那么升级程序是怎么制作出来的呢?软件制作商又是怎么知道用户使用的程序何时该升级,是否升级过了呢?在这里,提出一个设计思路与方案供大家参考与交流,并不局限于用何种语言和工具去实现,下面就开始吧:
三、设计思路
一般公司制作的软件都会有两个程序,在这里我们简称为主程序和升级程序。主程序完成客户所要求的主要功能,而所有的升级任务则交由升级程序来完成。升级过程可以由两种方式来完成,一是直接使用升级程序检查当前主程序是否是最新版本,若不是则执行升级任务。二是将升级程序嵌套在主程序中,当用户执行主程序时,再启动升级程序完成升级的任务,在这种方式中我们还可以设置一个开关,用来控件是否需要执行升级任务,这将在后面具体说明。流程图如图1。
四、具体设计
为完成升级任务,需要用到配置文件,分别在服务器端与客户端做如下设置:

 

 

 

 

图1
服务器端
第一步:在服务器端数据库中建立如下结构的表格:Update表

 

 

 

 

这是最简单的表格样式,当然也可以更复杂,记录更多的信息,比如客户升级的一些具体信息等,这里不做具体讨论。
现在就各个字段的含义做如下说明:
Id为主键。
Addr是指主程序使用的对象和环境,即使用的对象和环境不同版本的功能可能会有所不同。
Flag是升级开关,即说明是否需要执行升级任务,它是整个升级任务的总开关,标志为1表示需要执行升级,为0表示不需要执行升级任务。
Ver表示版本号,标志当前主程序的最新版本号。
Udate表示此次更新的日期。
第二步:在服务器端建立以下升级配置文件(server。ini)。下载方式采用FTP下载
Addr‘此键值表示使用的地点,值应与上表中Addr字段的值对应
Server=172。30。5。1‘此键值表示可以提供下载服务器的IP(假如下载数量很大,还可以指定多个下载服务器的IP)
Username=anonymous‘用户名
Passward=‘密码
Port=21‘端口
Filename=AA。exe‘要下载的程序名
Iniflag=1‘是否必要更新该值的含义应与服务器上update表中Iniflag值对应,当此值为1时表示只有此次更新成功了才能继续使用主程序,为0表示即使客户端没有进行此次更新也可以继续使用主程序
Version=3。0‘最新版本号
Lastupdate=2005-10-21‘最新更新日期
Num=3‘其他控件数量,有时程序的更新可能还会有其他第三方的控件的更新,假如此值为0则即使后面控件数有值也不用理会,但该值应该与后面的控件数量对应,有的控件不仅要更新而且还要注册。
C1=EE。ocx‘C控件名F是否注册1需要0不需要
F1=1‘假如该值为1则将在本地产生一个Reg。bat文件,对该控件进行注册,为0则只是下载更新不生成注册文件
C2=FF。ocx
F2=1
C3=GG。dll
F3=0
对以上文件内容具体说明如下:
此次更新将会对Addr这个版本的主程序进行更新,采用FTP下载方式,下载端口21,用户名anonymous,密码为空,下载服务器的地址是172。30。5。1,主程序的名字是AA。exe,下载为必要下载,假如更新不成功,不能继续使用主程序,此次更新的版本号为3。0,更新日期是2005-12-21,需要同时更新的控件有3个,它们是EE。ocx,FF。ocx和GG。dll。其中前两个文件将会在客户端生成注册文件Reg。bat文件,对这两个文件进行注册。
客户端
需要建立本地升级配置文件,该文件的主要作用是保存每次升级后的最新日期与版本号,以便为下次升级作参考以及初始下载服务器升级文件的相关信息等。其格式有说明如下:
update
userlocal=Addr‘系统使用的版本
server=172。30。5。1‘下载升级配置文件的地址
username=anonymous‘下载用户名
password=‘密码
port=21‘端口
version=2。0‘当前使用系统的版本号(升级成功之后需要更新)
lastupdate=2005-12-10‘当前使用系统的最后更新日期
Updatefilename=Server。ini‘要下载的服务器上升级配置文件的文件名
updatename=update。exe‘要启用的升级程序的名字
此文件的内容说明如下:
该主程序使用的版本是Addr的,默认下载的服务器是172。30。5。1,下载采用FTP下载,用户名是anonymous,用户名为空,端口为21,当前使用的版本号为2。0版本,最后更新的日期是2005-12-10,要下载的升级配置文件的名字为Server。ini,启用的升级程序的名字为update。exe。假如下载Server。ini文件中发现有F注册标志为1的,将还会在本地形成一个批处理注册文件。
现就以上举例说明升级程序的流程。
1。假如直接运行升级程序,以上述为例说明:。。。。。客户端使用的Addr版本,首先从172。30。5。1服务器上下载名为Server。ini的升级配置文件,然后比较两个文件中的Version值,由于本地配置文件(update。ini)中的version值为2。0,比从服务器上的下载的升级配置文件(Server。ini)中的Version值3。0的版本要低,因此升级程序判定此次升级任务有效,需要升级,并且由于必要升级标志Iniflag值为1,因此假如不执行升级主程序将不能使用。下载时将会首先生成一个临时文件夹,所有文件下载成功后,再将临时文件夹里的文件复制到目的文件夹下,由于此次更新有需要注册的文件,因此还会生成Reg。bat文件,对文件进行注册。假如升级成功后,本地配置文件(update。ini)中的内容改变为version=3。0,lastupdate=2005-12-21。最后删除临时文件夹下的文件。到此整个升级任务完成。当然升级程序还可以将客户端升级的信息再写回服务器端,比如客户端何时执行了升级任务,此次任务是成功还是失败等。在这里不做讨论。程序流程图如图2:

 

 

 

 

 

 




图2
2。假如是从主程序运行的,其流程与上述基本一致,只是在启动升级程序之前,会去判定升级标志是否打开,假如服务器上update表中对应版本的Flag升级标志为1,表示升级标志打开,说明服务器端软件有更新,但是客户端是否已经升级过了呢,是否已经是最新版本呢,这还要再比较本地主程序的版本号update。ini中的version值是否与服务器上update表中的Ver字段的值一样,假如相同则表示客户端已经是最新版本,无需执行升级任务;假如不相同则表示客户端软件还没有执行升级任务,应该继续判定是否必要更新Iniflag的值,假如该值为1,表示必要更新,即不执行升级任务,主程序不能再继续使用,主程序应立即启动升级程序,然后关闭自己。假如该值为表示不是必要更新,只是提示“主程序有更新,请马上更新”,询问客户是否现在升级,但客户由于种种原因不愿立即升级的还可以继续使用主程序。流程见图3。
五、结语
通过以上介绍,相信大家已经能够制作一个简单升级程序了。以上的设计思路只是一般项目中普遍采用的雏形,在升级的过程中主要还用到了配置文件的读写操作,大家还可以自由发挥,拓展其功能,使其应用更为广泛。