怎么使软件具有"自动升级"功能?(200分)

  • 主题发起人 主题发起人 winmaster2
  • 开始时间 开始时间
W

winmaster2

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么使软件具有"自动升级"功能?
需要完成以下步骤:
当用户选择"自动升级"后,软件自动检测网上是否有最新版本,如果有,就自动下载,
下载完成后,替换原来的旧版本.
 
步骤你自己不是说完了么?,当用户选择"自动升级"后,软件自动检测网上是否有最新版本。

在你的网上做个版本标志,读取——判断—(有)—下载、安装……
|——(无)—提示没有新版本

不过常用的方法不是你这样的,而是检测日期来判断让用户定时去你主页看看,比如金山毒霸的病毒库
 
nod wjiachun 检测日期是最好的,但是也有一个不好的地方。
因为病毒库的更新有基本固定的时间,可是我们自己的软件就不一定了。
最好是像FLASHGET那样的,获取软件版本号,后台连接到你的主页软件判断
 
1.把软件放在服务器上,大家都到网上去运行此程序;
2.做个判断程序生成的时间的小程序,放到批处理中,若是新的,则拷贝过来
3.用B/S方式开发




 
有个控件叫updata
的好像有这个功能
 
...有意思
 
就象norton 系列的软件,好像比较难实现吧……
 
可以用自己设定自动升级时间的方法来检测是否要升级,如时间等于指定的时间则可通过FTP服务
连接服务器来下载,然后运行下载的升级文件。
 
wjiachun说得很对!!!
 
wjiachun说得很对!!!

 
我的问题是怎么实现?
^^^^
1.当用户选择"自动升级"后,如何软件自动检测网上是否有最新版本?
2.如果有,如何使程序自动下载?
3.下载完成后,如何替换原来的旧版本?
 
你可以做一个ASP 程序, 下载你的EXE 文件, 你的EXE 可以带有版本号,
同时你必须做一个OCX 同样带有版本信息。 将OCX 与EXE 打包在一个CAB 文件中即可
实现下载。
 
我不会ASP!
我的问题是怎么用 代码 实现?(最好有原代码)
^^^^
1.当用户选择"自动升级"后,如何软件自动检测网上是否有最新版本?
2.如果有,如何使程序自动下载?
3.下载完成后,如何替换原来的旧版本?
 
这样吧,按我说的做,很简单的。比如你的应用程序只有一个主exe文件,程序启动时
你先用TWebBrowser或者TNMHTTP去Navigate某一个制定的页面,比如
http://www.urweb.com/update.htm,如果有更新这个htm文件就写着更新的地点,如果
没有就写着比如说False,然后你分析TWebBrowser或者TNMHTTP得到的页面源代码,然后
判断是否需要下载,如果需要下载,也使用TWebBrowser或者TNMHTTP去Navigate
http://www.urweb.com/myexe.exe,放在temp目录下面,然后把某一段比如说
copy c:/temp/myexe.exe c:/program files/mysoft/my.exe
放在注册表的RunOnce里面,等下次系统启动
自动覆盖那个exe文件!
又:如果你不知道这些步骤如何实现,请说明!

 
能够不用TWebBrowser或者TNMHTTP吗?因为我不会,也不想用.
 
winmaster2,既然你什么都不想用,那就手工发email通知用户"你的系统应该升级了"算了。
就不用编程了。
 
其实我做自动升级时的最大问题不在这里,而是:
新下载下来的程序如何代替当前正在运行着的老程序?
开了新的再关旧的?不合理!
 
反正你是有专门的模块或者子程序来进行升级过程的,在升级的时候提示一下:xxx要升级了,
在升级之前你应该关闭你当前正在运行的程序,是否继续。然后用户看着办了。
开了新的再关旧的当然不合理,应该是关了旧的再开新的,反正搞个升级子程序专门负责
这种事情也是很简单的。
 
关了旧的你倒帮我开个新的试试看?
 
后退
顶部