来自:王寒松, 时间: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文件