[IT]C/S自动升级程序原理

背景

我们给几个景区做了一个C/S项目,但是由于需求的变化,或者是Bug的出现,我们不得不修改程序程序。众所周知,C/S结构的应用程序可维护性比较差,它不同于B/S结构的程序,可以随着服务器端的更新,立即显现出来。因此我们不得不经常跑去景区手动更换程序。这样非常的麻烦,因此我们就做了一个自动升级的程序,由景区自己下载更新。

运行形式

(1)是作为一种服务,用户开机后自动隐藏运行。这种方式技术成本高,要求高可靠性和可用性。偶尔也会引起用户的反感。因windows操作系统升级就是这样进行的;
(2)启动应用程序时运行。这种方式比较受信赖。一般设计为强制更新。这种方式要求升级速度要快,如果升级文件长时间下载不下来。用户会更倾向于第一种方式。当然升级速度慢也可能与网络状况有关;
(3)用户手动点击功毙菜单进行。

原理

我们都知道,当一个程序或文件正在运行的时候,我们是无法对它进行删除或修改等操作,一般情况都是因为目标正在被占用。同样,当你运行一个软件,检测到新版本的时候你不能直接将自己给替换了,因为此时该软件正处于一个运行状态。

这就需要第三方程序来帮助你进行这个升级更新的动作。

自动升级程序是一个很重要的功能,原理其实很简单,一般包含两个程序,一个是主程序,另一个就是升级程序。

在这里,我们使用的是上面的第二种方法。

(1)启动升级程序,升级程序连接到服务端,下载升级内容到临时文件夹;
(2)升级程序获取服务端配置信息中新版本程序的更新日期或版本号或文件大小;
(3)升级程序获取原有客户端软件程序的最新一次更新日期或版本号或文件大小,二者进行比较;
如果发现升级程序的日期大于原有程序的最新日期,则更新;
或者是采用将现有版本与最新版本比较,发现最新的版本则更新;
或者用其他属性如文件大小进行比较,发现升级程序的文件大小大于旧版本的程序的大小,则更新。
(4)升级,获取下载文件列表,进行批量下载文档;
(5)升级程序检测旧的主程序是否活动,若活动则关闭旧的主程序;
(6)备份旧的主程序到备份文件夹中,删除旧的程序,拷贝临时文件夹中的文件到相应的位置;最后修改客户端应用程序的版本型号为升级后的版本号,以避免重复升级。
(7)检查主程序的状态,若为活动的,则启动新的主程序;
(8)关闭升级程序,升级成功。

另一种方法:

在客户端段程序启动时,启动更新程序,但更新程序不做版本判断,到客户端更新目录下检查有没有下载的新版本,如果有就更新主程序并更新客户端版本信息,然后启动主程序,如果没有就直接启动主程序。由主程序判断是否有新版本,并在后台下载把文件放到客户端更新目录中,下载完成后,提示用户退出主程序,重新启动,在启动时由更新程序并更新客户端和客户端版本信息。

引用

软件自动在线升级的原理
自动升级的原理及实现

你可能感兴趣的:([IT]C/S自动升级程序原理)