自动更新程序设计实现思路
由于业务需要,以前的单个文件自动升级无法满足当前的普遍需要,必须想做一种懒人的自动升级办法,也就是每次程序启动前必须进行实时更新后才可以运行程序。
若准备让客户端程序实施自动更新,必须的前提条件是:
1. 专用更新服务器支持。
2. 客户端每次启动的时候都检查更新。
详细的分,应该如下:
服务器端:
1自动更新服务器可单独架设,也可和其他服务器一起使用。
2 自动更新服务器必须维护一个更新列表。比如说是Update.XML。列表内维护需要监视更新的文件名称,版本号。
3 服务器端必须可以根据目录内文件内,自动生成Update,XML文件。
客户端:
1. 客户端每次启动前都必须检测服务器当前版本号,务必使每次更新后及时的进行更新至最新版本。
2. 客户端自动更新在主程序之前运行,自动连接到服务器,并下载服务器的文件列表。
3. 将下载的文件列表与本地列表相比较,若有不同,则自动更新不同的内容。下载至临时目录。下载完毕后复制到程序目录。
为了证明以上思路是否可行,必须拿一个现成的自动升级来分析分析.正好今日在玩一款游戏,暂就拿他分析分析看看这款游戏是如何做的自动升级.
自动升级——
服务端维护一个程序全部的列表,程序自动将服务端的列表下载到本地,并且读取文件名和mod5
例如:http://update3.gc73.com/update/gamecity/lobby/files.dat
在服务器维护了一个完整的安装包,安装包内涵盖了全部升级所需要的文件。。。。
基本上升级的事情已经分析的差不多了。。。。
1. 客户端启动游戏的时候,首先启动的是自动升级的程序,自动升级的程序自动到网站上下载一个全部文件的列表表单和MD5码。。。
2. 通过分析和比较以上MD5是否相同,如果不相同就调用自动升级。。。。
3. 自动下载到指定的目录下,然后关闭自动升级,并且同时启动主程序。。。。。
网站更新目录:
http://update1.gc73.com/update/
列表表单
http://update3.gc73.com/update/gamecity/lobby/files.dat
文件及说明
文件名称 | 文件说明 |
|
CompeteResult.run | CompeteResult.exe | 必须传递参数才可以运行。Windows对话框程序,程序带资源。 |
Game.conf | 可用记事本打开 | 游戏记录信息 [游戏ID] 游戏路径 执行程序名称 游戏URL地址 游戏URL地址_WT问题? 检查更新次数 强制更新次数 玩家满人人数 |
Ins_ver.dat | 可用记事本打开 | 记录更新文件名称??? |
lineselect.dat | 可用记事本打开 | 行选择??? |
Lobby.exe | 自动更新程序 | 自动更新程序 |
Lobby.run | Lobby.exe | 客户端主程序 |
Login2.dat | 可用记事本打开 |
|
Login.dat | 可用记事本打开 | 记录登陆用户名 |
Server2.dat | 可用记事本打开 | 服务地址和端口 |
Server.dat | 可用记事本打开 | 服务地址和端口 |
Serverrpp.xyz | 记事本 | 记录类似MD5数据集 |
Setkey.dat | 可用记事本打开 | 未知 |
Unin.exe | 应用程序 | 未知 |
Uninst.exe | 反安装程序 | 卸载程序 |
Update.dat | 可用记事本打开 | 自动升级网络地址 |
UpDate.p | 未知 | 更新辅助程序 |
Updatetime.dat | 记事本 | 更新程序时间 |
url.conf | 记事本 | 网址记录集 |
url.dat | 记事本 | 网址 |
咱已经把本地文件和网络文件统统都分析了一个遍,现在要做的就是动手去写,去实现。当然,如果能少写个工具最好了。我记得安装同花顺软件的时候下载过一个MD5码生成器的小东西。暂且先凑合用着,呵呵。
转载地址:http://blog.youkuaiyun.com/pcl666/article/details/4566957