




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实现局域网中客户端程序的自动分发与更新关于程序开发中C/S和B/S两种模式的讨论网上随处可见,B/S模式以其客户端的零维护等优点已逐渐成为主流的开发模式。随着绿色软件的盛行,很多客户端程序不需要进行安装,因此有些面向局域网应用的项目中,程序员完全可以根据具体应用开发出C/S程序,为了方便客户端程序升级维护,可以结合B/S模式的优点,实现客户端用浏览器自动下载升级客户端程序。笔者曾经用Delphi开发了一个面向局域网的C/S模式的系统,最近因客户业务变化客户端程序需要随时进行更新与维护。如果每一次升级维护都需要管理员到每个部门每台客户机进行重新复制文件,用户显然是难以接受的。因此笔者考虑做一个ActiveX控件嵌入到Html页面文件中,让用户借助浏览器实现客户端程序的自动分发、更新。以下以Delphi开发工具为例,将解决过程及基本代码写出来,所有代码在Delphi7+Window9X、Win2k、WinXP下测试过。一、解决问题的思路及要点 Internet Explorer 3.0以上版本就支持在网页中嵌入ActiveX控件,用户通过浏览器访问网页时,将网页中的控件下载,并在用户机器上注册,以后就可在用户的浏览器上运行。控件下载一次后就驻留在用户本地机器上,下次再访问相同的网页时,如果ActiveX控件的版本不变,不再下载该控件,而是直接运行用户本地的控件。因此我们可以在Delphi中创建一个ActiveX控件,以实现自动下载客户端程序的功能。在Delphi中实现文件下载的方法很多,比较简便的是直接用idHTTP组件。idHTTP提供了个Get方:Get(AURL:String; Const AresPonseContent:Tstream),该方法用Tstrem来封装了返回的内容,通过对Tstream的SaveTo方法来保存下载的文件。Get方法必须指定下载文件正确的URL,而服务端的IP是可能改变的。在HTML中,利用脚本技术JavaScript可以获取当前网页的URL,当访问者用浏览器打开一个网页时,JavaScript将产生一个指向该页面的Document对象,Document的Location属性用于指定当前网页的URL。因此在编写代码时必须将Get方法的AURL参数设定为一个变量,这样可以先获取服务端网页的URL后,再传递给Get方法以便正确下载文件。正确下载客户端程序后,还应该自动执行该程序。在DELPHI使用函数WinExce(lpCmdLine:pAnsichar;uCmdShow:Cardinal)即可执行外部EXE文件。最后还应自动关闭打开的浏览器,可以利用动态数据交换技术DDE实现。Windows的DDE机基于Windows的消息机制,两个应用程序通过相互之间传递DDE消息进行DDE会话,从而完成数据的请求、应答、传输,这两个应用程序分别称为服务器和客户。打开的浏览器可作为服务器,而ActiveX可作为客户, Delphi的组件TDDEClinetConv用于客户程序建立和维护一个DDE会话。在浏览器未降低安全级别时,用户从客户机上访问嵌入了ActiveX的页面,不会弹出下载提示,用户仍然不能下载,因为该控件还没有证书,浏览器直接禁用。 为此我们可以从网上下载数字签名工具建一个测试证书并对该控件进行数字签名。关于数字签名可以参见资料/200401/11.doc。二、操作过程说明1在Delphi中创建ActiveForm:在Delphi7中,点击【File】【New】【Other】【ActiveX】【Active Form】什么是Active Form?Active Form也是ActiveX控件。不同的是,一般的ActiveX控件是单一的控件,只能从一个VCL控件转换而来,而Active Form可以把一个或多个VCL控件转换为一个复合的ActiveX控件。在接下来的Active Form Winzard对话框中New AcitveX Name项目中输入要创建的控件名如DownClient,其它默认。点击“确定”按钮后,Delphi中就创建了ActiveForm。从【SyStem】组件面板中拖入一个DdeClientConv组件,以实现关闭打开的浏览器。从【Indy Clients】组件面板中拖入一个idHTTP控件,以实现文件下载。2为ActiveForm添加一个方法点击菜单栏中【View】【Type Library】给当前控件添加一个方法,以接收需要下载文件的URL。在打开的类型库编辑窗口中点击“New Method”按钮,取名为GetDownUrl。在右边窗口中选中“Parameters”选项页,在此定义一个参数。参数名DownUrl,类型定义为BSTR。定义好后,还必须在该窗口中工具栏上点击“Register Type Library”按钮以注册该方法。系统会弹击一个注册成功的消息框,如下图。点击“OK”按钮,关闭类型库编辑窗口,在unit DownClientImpl1单元中,可以看到系统自动添加的过程GetDownUrl(const DownUrl: WideString)。3添加代码procedure TDownClient. GetDownUrl(const DownUrl: WideString);varsource,dest:string;DDE:TDDEClientConv;WinDir:Pchar;MyStream;TMemoryStream;begintry/获取系统目录GetMem(WinDir,256);getwindowsdirectory(WinDir,128);IF FileExists(Windir+Client.exe) then DeleteFIle(Windir+Client.exe);/删除客户端文件MyStream:= TMemoryStream.Create;/下载客户端文件Client.exeSource:= DownUrl +Client.exe; Dest:=Windir+Client.exe;IdHTTP1.Get( Source,MyStream );MyStream.SaveToFile(Dest); MyStream.Free; /释放/执行客户端EXE文件winexec(pchar(Windir+Client.exe),SW_SHOWNORMAL);Finally/关闭当前打开的IE浏览器DDE:=TDDEClientConvCreate(self); /创建DDE客户端 If DDEetLink(iexplore,WWW_Exit) then /建立DDE连接 DDERequestData(WWW_Exit); /关闭IEDDEFree;end;end;4编译ActiveForm设计好ActiveForm后,还需要正确设置相关的选项:使用【Project】 【Web Deployment Options】 菜单命令打开对话框,指定输出路径。Target Dir:用于指定要发布的ActiveForm在Web服务器上的路径。如:C:inetpubwwwrootTarget URL:用于指定要发布的ActiveForm在Web服务器上的URL 。 如http:/localhostHTML dir :用于指定生成的样本HTML文件的路径,该文件包括对ActiveForm的引用,做测试用。使用【Project】 【Web Deploy】来编译该ActiveForm。Delphi在指定的目录下生成一个Web页和一个ActiveX控件DownClientProj1.ocx。下面是产生的样本Web页: Delphi 7 ActiveX Test Page You should see your Delphi 7 forms or controls embedded in the form below.5修改Web页面的内容在样本Web文件中,用标记了ActiveX的属性。在本文前面分析到,可以用HTML的DOCUMENT对象的LOCATON属性获取当前页面的URL以传递给ActiveX的GetDownUrl(const DownUrl: WideString)方法,以便正确下载客户端文件,因此,应当修改WEB文件内容如下:zxt. GetDownUrl (document.location)6对ActiveX控件数字签名证书由下面过程产生:(1) 产生名为zhangxt(自己命名)的证书与私钥文件,私钥为zhangxtmakecert -n CN=公司名称 -sv zhangxt.pvk zhangxt.cer(2) 由证书生成spccert2spc zhangxt.cer zhangxt.spc (3) 对DownClientProj1.ocx控件进行签名:SIGNCODE DownClientProj1.ocx -spc zhangxt.spc -v zhangxt.pvk当用户在客户端用浏览器访问服务端的网页时,浏览器会弹出下载提示如下图,如果用户选择“是”,则网页中的ActiveX会下载到用户端客户机,ActiveX会自动下载客户端程序并在本地机执行,自动关闭打开的浏览器,不再需要LL管理人员到每个部门每台客户机上重新复制文件,实现了客户端程序的自动分发。客户端程序升级后只要将升级后的程序放在服务端覆盖原来程序即可,这样就实现了程序的自动更新。限于篇幅,本文旨在介绍解决问题的思路及要点,并列出简要代码,其实在实际应用时还需加上一些功能,如客户端程序不只一个EXE文件还有DLL文件,配置文件时可以遍历文件夹逐个进行下载
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 入职课件模板
- 夯实基础管理之道
- 光伏培训课件
- 你身边的5个人课件
- 湖北小池滨江高级中学2025-2026学年高三物理第一学期期末统考模拟试题
- 中小学生航空航天科普知识竞赛试题库及答案
- 2025中央一号文件应知应会试题库和答案
- 产程全程观察与规范化护理指南
- 企业生产安全培训会议课件
- 企业春节前安全教育培训课件
- 2025至2030中国环境监测行业市场发展现状及投资前景与策略报告
- 2025年广西继续教育公需科目考试题和答案
- 阀门采购管理办法
- 2024-2025年第三方海外仓行业分析与展望报告-亿邦动力
- 企业降本增效课件
- 儿童生长曲线课件
- 《Sketch Up 软件运用》课件(共九章)
- 自来水工程施工课件
- 发酵饲料培训课件
- 电信营业员的理论考试题及答案
- 2025年河北大学版(2024)小学信息科技三年级(全一册)教学设计(附目录 P179)
评论
0/150
提交评论