电脑知识爱好者 帮你提供最完美的电脑学习网站Rss 2.0

今天是:

知识在于积累,成功在于努力。--站长(请收藏我们便于您学习) [设为首页]  [加入收藏]  [联系我们]
网站首页 | 菜鸟学堂 | 电脑故障 | 电脑系统 | 图像设计 | 工具下载 | 图片中心 | 电脑入门 | 菜鸟入门 | 电脑问题 | 硬件知识 | BOIS设置 | 网站更新
您现在的位置: 电脑知识 爱好者 >> 菜鸟学堂 >> 电脑知识问答 >> 软件应用问答 >> 正文 用户登录 新用户注册
如何实现软件在线升级
电脑知识爱好者 www.cfaninfo.com 帮您成为电脑知识高手为您提供技术信息   

          ★★★   作者:佚名    文章来源:互联网整理    点击数:    更新时间:2008-5-11 17:53:14 添加到百度搜藏 添加到百度搜藏 【字体:

  一、实现原理
         一般来说Update分为客户端和服务器端两个组成部分,客户端接收服务器上的更新信息,并下载更新文件,然后完成一系列注册、配置等更新工作,全部自动化,不用人工操作。
  根据笔者的经验,Update程序最好独立于主程序之外,也就是说有一个单独的Update.exe程序来执行更新操作,这样既可以直接更新主程序,也便于完成Update的“自身更新”。
  首先,我们遇到的第一个问题是选择合适的开发工具。一般来说Update的功能并不复杂,只是完成下载更新的功能,所以本文就用VB语言编写代码。另外也可以选用一些成熟的Update组件,例如用.NET框架开发的应用程序更新组件AppUpdater等,都可以很方便地帮助我们而只需要编写极少的代码。
  由于各种Update程序的种类繁多,本文主要介绍通用的一些特性以及适合个人编程、小型公司的Update经济方案,执行流程如下:
  1.下载网站某个页面,根据页面内容获得最新版本号;
  2.如果最新版本高于当前版本,则下载升级文件(一般为压缩包);
  3.释放文件,并用最新文件替换旧文件完成升级。
  按照这个最简化的方案,当开发者需要更新升级软件的时候,只用FTP上传更新文件即可。好处是可以不必开发服务器端,更不用购买或租用昂贵的升级服务器。
  OK,我们现在开始详细剖析Update的具体执行过程,软件界面如图。
二、穿tou防火墙
  首先,Update要对网络是否已经连通进行判断。笔者在这个问题上反复使用过多种方法:Ping某个IP地址、获取注册表键值、网卡连通判断等等,最终都不理想。原因在于IP地址可能变化、甚至有时候即使物理连通了,也不一定能够确保文件的下载更新。
  笔者使用的方法是利用Microsoft Internet Con trols控件访问开发者的官方首页来判断网络是否已经连通。代码如下:
  Dim Network As Long
  Private Sub Form_Load()
  WebBrowser1.Navigate "http://www.boobsoft.com"
  End sub
  Private Sub WebBrowser1_DownloadComplete() '当Web页面载入完毕此事件激活
  If Network = 0 Then
  Label1.Caption = "正在升级,请稍后..."
  Update '调用升级过程
  End If
  End Sub
  Private Sub WebBrowser1_NavigateError(ByVal pDisp As Object, URL As Variant, Frame As Variant, StatusCode As Variant, Cancel As Boolean) '当Web页面浏览失败的时候此事件激活
  Network = -1'必需此语句,在Update过程中要判断网络是否持续通畅
  MsgBox "网络没有连通,或升级服务器临时关闭,请稍后再试。"
  End Sub
  小经验:Internet Controls控件的好处不仅是代码简单,它是微软官方控件,更重要的是可以直接穿tou防火墙,节省了我们很多时间。

本新闻共2页,当前在第1页  1  2  

 

三、检查更新
  接下来我们要“检查更新”——根据版本号判断是否需要Update。
  关键技术:从 HTML 文档中提取 TEXT 文本。
  方法很简单,我们仍然利用Internet Controls控件,先建立一个ver.html文件,里面只写一个简单的版本号2.01即可(当然,还可以在ver.html文件里面写入一个更新文件的列表,或者是一个压缩好的升级包文件名),然后传送到http://www.boobsoft.com/ver.html位置上。以后每次更新只要修改ver.html文件然后用FTP上传即可。最稳妥安全的方法就是将Update升级包完整的上传好之后再修改ver.html文件里面的新版本号,方可万无一失。
  接下来我们就可以编写获取这个ver.html文件的代码了(由于代码比较长,笔者已经将它们封装成DLL组件,下载地址为http://www.boobsoft.com/update.rar)压缩包内的Download.dll组件可以用来下载任意文件。
 
四、断点续传,下载更新
  最后,仍然利用由笔者提供的Download.dll组件,下载更新文件就可以了。如果更新文件比较大,还可以进一步增加断点续传功能。
  调用WINRAR自动解压缩包也是非常实用的。为了方便地调用WINRAR的功能,可使用下列封装好的函数:
  Function GetWINRARPath() As String
  Dim myReg As New Registry, KeyFound As Boolean
  KeyFound = myReg.GetKeyValue(HKEY_LO CAL_MACHINE, "Software\Microsoft\Windows\Cur rentVersion\App Paths\winrar.EXE", "Path", GetWINRARPath)
  If KeyFound = False Then MsgBox "系统未安装WINRAR.EXE!": GetWINRARPath = ""
  If KeyFound = True Then GetWINRARPath = GetWINRARPath & "\WINRAR"
  End Function
  Sub compress(ByVal SOURCE As String, ByVal TARGET As String, Optional Mu As String)
  If Not GetWINRARPath = "" And Dir(SOURCE) > "" Then Shell GetWINRARPath & " -ibck -p9910 a " & Mu & " " & TARGET & " " & SOURCE, vbHide
  End Sub
  Sub decompress(ByVal SOURCE As String, ByVal TARGET As String)
  If Not GetWINRARPath = "" And Dir(SOURCE) > "" Then Shell GetWINRARPath & " x " & SOURCE & " " & TARGET, vbHide
  End Sub
  调用举例:
  compress "C:\1.jpg", "c:\5.rar" ' 将"C:\1.jpg"压缩为"c:\5.rar" 。
  decompress "C:\1.rar", "c:\test\" ' 将"C:\1.rar"解压缩到"c:\test\"目录
  compress "C:\TEST\", "c:\3.rar", "-r" '目录(含子目录)压缩
  如果下载量非常大,我们还可以采用BT等进阶的下载方式。
五、安全性
  Update自动升级应用程序的能力具备很多好处,但使用它存在着一些潜在的隐患,这也是我们不得不考虑的问题:第一种危险是欺骗,有人会把自己的Web服务器用来部署更新的Web服务器。他们可能会利用那台Web服务器在你的应用程序路径安装一个病毒程序。阻止欺骗或防止通过网络进行的不正当干预的最简单的方法是使用HTTPS。第二种危险是黑客,他们既可能从内部也可能从外部来攻击你的服务器。一旦攻击成功,则意味着成百上千的客户端也可能通过自动更新遭受连累,这种情况将是灾难性的。
  为解决这个问题,我们可以对更新文件内容(上文中的ver.html)进行加密,然后再对升级包设置密码。笔者推荐用WINRAR进行压缩并加密码,一则可以缩小升级包的大小,二则WINRAR的密码安全性也是有口皆碑的。
  总结:Update自动升级技术涵盖了多种的网络技术,其应用领域也是广阔的,譬如用来进行用户在线调查、软件使用频率测定、自动搜集用户信息、传送错误信息、软件测试等方面。“Update”具有使自身不断“进化”的重要功能。本文篇幅有限,就只能在此止笔了。Update带来的交互性,确实值得我们应用的。

本新闻共2页,当前在第2页  1  2  

 

免责声明:本网转载内容均注明出处,转载是出于传递更多信息之目的,并不代表我们立场。

  • 上一个文章:

  • 下一个文章:
  • 赞 助 商
     
    频 道 最 新
    · 如何获取自己的IP地址
    · 查找他人的IP地址方法
    · 输入网址但不被记录地址该怎么办
    · 如何备份驱动程序?
    · WinRAR无法打开文件该怎么办?
    · C:\WINDOWS\System32\alg.exe是什么程序?有
    · 如何删除IE8.0,WinXP SP3系统轻松卸载IE8 B
    · 关于IE8.0,IE8内存占用量过高
    · 什么是WinPcap,WinPcap有什么用
    · 不用任何软件!XP本身功能隐藏文件
    · 如何卸载IE7浏览器,卸载IE7浏览器的小技巧
    · 合并电脑N个TXT文档的方法
    · 杀毒软件的使用秘籍
     
    相关文章
    网页无法打开flash怎么办
    网页无法完全打开的原因
    网页链接无法打开怎么办
    ie7无法打开网页
    无法打开杀毒网页
    二级网页无法打开
    网页无法显示图片的原因
    部分网页无法打开怎么办
    冰河木马专杀方法
    win32.parite.a是什么
    盗qq号木马如何清除
    如何彻底删除木马
    Denial of Service