利用TigerInstaller实现自动升级功能.doc_第1页
利用TigerInstaller实现自动升级功能.doc_第2页
利用TigerInstaller实现自动升级功能.doc_第3页
利用TigerInstaller实现自动升级功能.doc_第4页
利用TigerInstaller实现自动升级功能.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

利用Tiger Installer实现自动升级功能理论篇软件的自动升级功能是一个非常实用的技术。对于C/S系统每次系统修改都要逐一升级客户端,这是一个繁琐的让人痛恨的工作,也是C/S系统经常被人抨击的一个痛处。即便是三层系统,在系统修改的时候也免不了要更新客户端。对于其他的单机软件,在现在互联网普及的环境下给软件增加一个通过互联网自动升级的功能也能给用户带来便利,同时提升软件的档次。要实现自动升级的功能在技术上有什么要求呢?第一,需要制作升级包。这个升级包还需要功能全面,简单的系统一般是直接更新一个客户端程序就可以了,但是实际复杂一点的系统都可能包含多个文件、注册表、ActiveX组件、COM/COM+组件、BDE/ODBC别名、升级的时候还可能要执行一些程序。这是自动升级功能中最复杂的部分,但是现在Tiger Installer已经支持生成功能完备的升级包了,而且这些升级具有可以和原来的安装融合在一起的功能,也就是说无论装了多少个/次升级包,卸载的时候都可以一次过卸载所有的对象,不需要对升级包进行逐一卸载。具体操作请参阅Tiger Installer的帮助文件。第二,需要从服务器获得最新的版本,下载升级包。这个有很多的实现方案,可以通过服务器的共享文件夹、FTP服务器、WEB服务器、或者自己写的服务器。我认为实用WEB服务器是最佳选择,管理方便,功能强大,我们可以通过脚本实现比如预定时间发布升级包、根据客户端的版本发布不同的升级包等功能,在后面的例子将会用简单的ASP脚本实现上面的功能。第三,更新主程序的问题。在自动升级的时候一般都是在主程序里获得最新版本并启动升级包进行升级。这样会带来一个问题,就是如何避免由于主程序在运行的时候不能更新造成的升级失败。在这里我使用了一个简单的办法,在启动升级包的时候把主程序的进程ID传给升级包,这样升级包就可以根据这个进程ID获得主程序的进程句柄,使用WaitforsingleObject函数等待主程序退出再执行升级操作,这样就不会有无法更新主程序的问题了。根据上面的技术分析,第一点已经由Tiger Installer实现了,第三点中升级包中根据进程ID等待主程序退出也已经在Tiger Installer中实现了,其他的部分我写了一个Delphi简单的控件来实现。下面是控件的属性和方法。属性/方法类型Version : String;属性软件的当前版本。VersionURL : String;属性取得最新版本的URL。DownloadURL : String;属性下载升级包的URL。LatestVersion : String;属性获取最新版本。Download : Boolean;方法下载升级包,并且执行升级。实战篇下载Tiger Update控件包从下面的地址下载Tiger Update控件包里面包含控件和一个范例程序,两者都包括源代码。/stuff/tigerupdate.rar控件的安装1 用Delphi打开TigerUpdate60.dpk或TigerUpdate70.dpk(分别在Delphi6和Delphi7目录下),编译安装,如下图,先点击Compile再点击Install。2 点击Delphi的菜单Tools-Environment Options.进入Environment Options.对话框,在Library页面中把Tiger Update控件所在的目录加入到Library Path中,如下图3 安装完毕。编译测试程序打开TigerUpdateSample目录下的UpdateTest.dpr文件,编译出可执行文件UpdateTest.exe。生成原始安装程序1 1 打开TigerInstaller,在左边对象树状图中右击我的应用软件节点,在弹出菜单上点击属性,如下图把产品名称改成“自动升级测试程序”如下图2 2 在应用程序文件夹(即安装目录)的右击弹出菜单中点击添加-文件如下图在弹出的打开文件对话框中选择刚才编译出来的UpdateTest.exe文件。3 3 右击UpdateTest.exe文件,在弹出菜单上点击“创建快捷方式”,如下图:4 4 把创建出来的快捷方式拖放到“用户的桌面”文件夹中,这样在安装完以后会在桌面上创建快捷方式方便测试程序。5 5 点击保存按钮保存这个项目为Sample.tpr6 6 点击生成,生成原始安装程序。修改并编译新的UpdateTest程序打开TigerUpdateSample目录下的UpdateTest.dpr文件,修改TigerUpdate1组件的属性Version为1.01,保存项目,然后重新编译出可执行文件UpdateTest.exe。生成升级包1. 1. 打开刚才保存的Sample.tpr文件。2. 2. 点击菜单上的“新建-本项目升级包”创建Sample.tpr的升级包项目,如下图:3. 3. 在左边对象树状图中右击我的应用软件节点,在弹出菜单上点击属性,在项目属性对话框中把版本改成1.014. 4. 同样把UpdateTest.exe文件加入到“应用程序文件夹”中5. 5. 为了区分原安装程序和升级包,点击菜单“编译-生成选项”,在生成选项对话框中把输出文件夹改成“自动升级测试程序Update”,如下图:6. 6. 点击“保存”按钮,把项目保存为SampleUpdate.tpr7. 7. 点击生成按钮生成升级包。发布升级包假设您的电脑上已经安装并且设置好了IIS。把TigerUpdateSample目录下的Update.asp文件复制到web站点的主目录下,然后把升级包重命名为Update.exe同样复制到web站点的主目录下。测试运行原始安装程序,安装完毕后,在桌面会创建一个UpdateTest的快捷方式,双击打开UpdateTest.exe,注意这时候Caption显示的是1.00,点击“检查版本”按钮,会显示“最新版本:1.01”,点击升级会出现下载进度窗口,下载完以后程序退出,升级包的安装程序启动,升级包安装好以后,双击桌面上的UpdateTest快捷方式,打开UpdateTest.exe程序,您会发现现在的版本已经是1.01了。其他在需要强制更新软件的情况下(比如某些C/S系统,为了保证数据安全,所有客户端的版本必须是最新的),可以在UpdateTest的主程序的Dpr文件加上下面的代码:(原来已经有了,把注释去掉即可) /以下的代码适合需要强制升级的情况 with TTigerUpdate.Create(nil) do begin try VersionURL := /Update.asp?Command=Version; DownloadURL := /Update.asp?Command=Download&Version=; Version := 1.01; if (LatestVersion Version) and Download then Exit; finally Free; end; end;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论