怎么实现在线升级功能? 如类似各杀毒软件实现在线升级。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 见过一个控件,叫AUTOUPGRADE,可以从网站获取升级程序。升级的过程是关闭了主程序,留下升级的窗体,然后从网站下载更新程序,最后再启动程序。 呵呵,方法有一些啊。贴一个主要思路是: 主程序运行时通过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 是旧的主程序本身.然后主程序 terminateupdate_self 小程序开始工作先判断系统平台, 循环查找查找主程序进程ID 是否还在内存中存在.如存在 说明主程序还没有完全退出. 如不存在 则开始更新 copyfile将主程序(old_exe) 替换成 new_exe 用DELPHI的动态加载BPL库.在CSDN|软件|DELPHI源程序下有相应的例子下载.金山毒霸的在线升级就是用的动载BPL文件. 在网上放一个 ini文件,查找 ini 文件中的版本号是否比当前版本大,如果大的话,就关闭主程序,调用升级程序。我在ini文件是这样定义的。[new]version=20030701[20030701]mainfile=main.exedatafile=data.exeotherfile=other.exe我首先找ini文件,找到new,发现当前版本为20030701与现程序比较,发现比较新,然后再定位节点 20030701发现有3个文件需要更新,假定文件放在 www.sina.com.cn/upgrade/目录下然后用 idhttp.get('http://www.sina.com.cn/upgrade/main.exe')成功的话再idhttp.get('http://www.sina.com.cn/upgrade/data.exe')idhttp.get('http://www.sina.com.cn/upgrade/other.exe')不过这样由于服务器容易断线和其它socket错误。所以我做成一个zip文件,ini文件还是一样.但下载过程需要改一改首先用idhttp.get('http://www.sina.com.cn/upgrade/20030701.zip')20030701.zip里面的文件都写在 ini 文件的节点[20030701]mainfile=main.exedatafile=data.exeotherfile=other.exe然后在升级程序去把它解压,然后再覆盖文件, 可以去这里看一看,免费提供,绝对实用: http://www.aslike.net 数据库中间层 有段代码编译出错 求教:一个函数作用域的问题? 请高手帮助,数据更新的问题,TKS! 怎样将文本文件导入到SYBASE数据库,谢谢各位高手!很急!!!!!! 怎样保存一个1M的文件到数据库中(SQL SERVER 2000)?? 如何实现在两程序间共享大于256字节的字符串资源?(内存共享) 主题:如何在窗体上绘制一个包含N*N个格子的正方形? 请问如何通过vba把数据和位置导入到word的文本框.可否给个最简单的demo 如何在delphi中调用外部可执行文件 如何把某一目录中的几个文件拷贝到软盘上? 软件升级技术. 程序设计:自动升级程序的制作
升级的过程是关闭了主程序,留下升级的窗体,然后从网站下载更新程序,最后再启动程序。
程序版本后, 主程序释放出一个小程序 单独建立一个进程完成自身覆盖自己的工作。程序流程是: 主程序制作: 将一个完成自身升级的小程序先用 aspack压缩
然后用 lz 算法压缩程序压缩。 做成资源文件编译到主程序内部.主程序运行 --> 释放update_self 小程序.
使用createprocess 建立一个update_self.exe的新进程
参数给定 update_self.exe PID new_exe old_exe
参数PID :是主程序的进程ID new_exe 是新程序. old_exe 是旧的主程序本身.然后主程序 terminateupdate_self 小程序开始工作
先判断系统平台, 循环查找查找主程序进程ID 是否还在内存中存在.
如存在 说明主程序还没有完全退出. 如不存在 则开始更新 copyfile
将主程序(old_exe) 替换成 new_exe
查找 ini 文件中的版本号是否比当前版本大,
如果大的话,就关闭主程序,调用升级程序。我在ini文件是这样定义的。
[new]
version=20030701
[20030701]
mainfile=main.exe
datafile=data.exe
otherfile=other.exe我首先找ini文件,找到new,发现当前版本为20030701
与现程序比较,发现比较新,
然后再定位节点 20030701
发现有3个文件需要更新,
假定文件放在 www.sina.com.cn/upgrade/目录下
然后用 idhttp.get('http://www.sina.com.cn/upgrade/main.exe')
成功的话再
idhttp.get('http://www.sina.com.cn/upgrade/data.exe')
idhttp.get('http://www.sina.com.cn/upgrade/other.exe')不过这样由于服务器容易断线和其它socket错误。
所以我做成一个zip文件,ini文件还是一样.
但下载过程需要改一改
首先用
idhttp.get('http://www.sina.com.cn/upgrade/20030701.zip')20030701.zip里面的文件都写在 ini 文件的节点
[20030701]
mainfile=main.exe
datafile=data.exe
otherfile=other.exe然后在升级程序去把它解压,然后再覆盖文件,
http://www.aslike.net