LiveUpdate(自动更新)经验

http://dev.csdn.net/article/28/28023.shtm
以下是我的具体思路:

写两个程序,一个是主程序;一个是升级程序(升级程序放在服务器上);

说明:所有升级任务都由升级程序完成。

1.启动升级程序,升级程序连接到网站,下载新的主程序(当然还包括支持的库文件等)到临时文件夹;

2.升级程序检测旧的主程序是否活动,若活动则关闭旧的主程序(同时记下主程序的状态);

3.删除旧的主程序,拷贝临时文件夹中的文件到相应的位置,同时注册相应的文件;

4.检查主程序的状态,若状态为活动的,则启动新的主程序;

5.关闭升级程序。

6.祝贺你,升级完成。

由于网友提出了关于升级这个升级程序的问题,以下是对其思路进行的一点补充,但原文仍然是升级主程序的,具体代码需读者自己添加:

7.主程序升级完毕;
8.升级程序继续检查所下载的临时文件中是否含有NewUpdate.exe(新的升级程序)和rename.exe(是一个可以更改文件名的程序);
9.若存在以上两个文件,表示要更新Update.exe文件;启动rename.exe程序,同时update.exe关掉自己;
10.rename.exe程序检测update.exe是否已被关掉,若已关掉,删除该update.exe。移动临时文件夹中的NewUpdate.exe文件到主程序的目录下,同时更名为update.exe;
11.rename.exe关掉自己。
12.OK,至此升级程序也被升级了。

-------------------------------------------------------------------2--------------------------------------

我的方法可能比较笨,不一定能奏效。

网络传输还是socket,以文件为更新单元,比如有一个10M的资源文件需要更新,就必须下载10M,如果资源文件更大,就很麻烦了,这是缺陷。

关键是版本控制,在客户端建立version.dat文件,写入以下内容(可以自定义格式):
program.exe v1.00
resource.dat v1.00
data//otherfile.dat v1.00

假设这几个文件是应用程序的组成部分。

建立更新程序update.exe,每次运行的时候从服务器上获取新的version.dat文件,当然了,update.exe事先要清楚服务器的地址与协议。保存新的版本文件在本地,写作version2.dat,然后拿它和本地的version.dat作比较,按格式检查是否存在更新版本,如果存在更新,就依次向服务器发送更新请求,例如检查到program.exe的更新版本是v1.01,那么就发送更新请求,其中包括"program.exe"这样的信息,也可以自定义文件ID等或许更加方便,服务器接受更新请求,开始传输文件,传输协议需要自己来完成(会用FTP可能更好,可惜我不会)。

这样一来,很明显,每次更新的时候,都需要修改服务器上的version.dat文件,并将更新文件放入服务器的恰当位置。说实在,还属于半自动更新,算不上真正的“自动”。

更新中把下载下来的部分写到program.exe.update中,下载完成了,接着下载另一个需要更新的文件,如果有的话。全部完成后,用version2.dat替换version.dat,program.exe.update替换program.exe,完成更新。

如果想更新完毕后自动执行program.exe,可以利用CreateProcess()等。
另外如果要考虑断点续传的话还需要加强一下传输协议,这里略过。

希望这样的方法能对你有所帮助。

---------------------------------------3------------------------------------------------------

我前几天刚完成的,呵呵

共分成3部分:
1. 主程序
2. 自动更新程序
3. 自动更新文件生成器

自动更新程序先从网上下载文件列表(以XML文件形式保存),然后与本地文件列表进行比对,如果有不同则取得下载地址从服务器下载,下载完毕后开始更新。
XML列表文件内容如下:

<SJAutoUpdate URL="http://www.kingesoft.com/Temp"><FileInfo Name="/VPN.txt" Version="081102.081102.46" Size="46"/></SJAutoUpdate>

URL为网站上的更新目录,此目录应与本地目录的文件结构一致
Name为文件名,Version我取的是文件"创建时间.修改时间.大小",Size就是文件大小

这个列表文件是由自动更新文件生成器自动生成的。

我的MyCSDN就是这样做的,下载地址:
http://www.kingesoft.com/Company/DownLoad/MyCSDN.rar

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值