请教如何在软件内实现自动在线升级(200分)

  • 主题发起人 主题发起人 Z_JJ
  • 开始时间 开始时间
Z

Z_JJ

Unregistered / Unconfirmed
GUEST, unregistred user!
这是一个远程的C/S系统,我想在软件内实现:如果在线,检查当前版本是否最新版,需要升级时自动下载后自动替换原来的程序。
从没这样做过,不知道哪位高手做过请指教
 
来自:王寒松, 时间:2002-2-10 19:14:00, ID:918536
呵呵。 上面抢分的几位同志。人家说的是程序本身自启动哦。
我有个思路。正在写代码.明天就能贴上来了.

主要思路是: 主程序运行时通过HTTP和 FTP 或 FILE 协议从网上下载下来最新的
程序版本后, 主程序释放出一个小程序 单独建立一个进程完成自身覆盖自己的工作。

程序流程是: 主程序制作: 将一个完成自身升级的小程序先用 aspack压缩
然后用 lz 算法压缩程序压缩。 做成资源文件编译到主程序内部.

主程序运行 --> 释放update_self 小程序.
使用createprocess 建立一个update_self.exe的新进程
参数给定 update_self.exe PID new_exe old_exe
参数PID :是主程序的进程ID new_exe 是新程序. old_exe 是旧的主程序本身.

然后主程序 terminate

update_self 小程序开始工作
先判断系统平台, 循环查找查找主程序进程ID 是否还在内存中存在.
如存在 说明主程序还没有完全退出. 如不存在 则开始更新 copyfile
将主程序(old_exe) 替换成 new_exe

目前 控制台update_self 小程序我已经写完了,
编译后大小是42k. aspack压缩后大小是25k. 这样大小的文件即使不用其他压缩工具压缩
作为资源连接到 主应用程序里也不是负担.
好了。 通过HTTP方式自升级的控件做好了.
下载地址 http://www.bj99.net/delphi/download/update.rar
含全部源码和一个例子。
要用 WINRAR 3.0解压缩。 2.0版的解不开3。0版的WINRAR文件

 
接受答案了.
 
后退
顶部