TacAutoUpgrader使用指南.doc_第1页
TacAutoUpgrader使用指南.doc_第2页
TacAutoUpgrader使用指南.doc_第3页
TacAutoUpgrader使用指南.doc_第4页
TacAutoUpgrader使用指南.doc_第5页
全文预览已结束

下载本文档

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

文档简介

TacAutoUpgrader使用指南1 概述1.1 缺点l 仅支持HTTP方式升级。(不太适合客户端从网吧服务器上升级)l 仅直接支持按文件大小比较来决定是否下载一个文件;或者干脆下载所有文件。不过可以通过事件OnFileStart来根据文件大小和/或最后修改时间来决定是否下载一个文件。l 仅支持单一目标文件夹(因此不能升级程序目录的子目录中的文件,当然也有办法曲折实现)1.2 优点有详细的帮助文档升级向导的图片可以定制:属性Wizard.Pic118x218各对话框可以使用默认的或定制:属性ShowMessages(集合)升级信息文件格式简单1.3 其他若有不能自动替换的文件,程序目录中将留下名为“原名”+“.utmp”格式的文件,如:scktsrvr.exe.utmptxyfts.exe.utmp因为它们对应的原文件也是一个可执行文件,该控件不能自动结束它们;不过,只需要在程序里结束一下即可:在事件OnDoOwnCloseAppMethod中结束这些程序;在事件OnAfterRestart中开始运行这些程序。如果是有选择性地下载真正的升了级的文件,需要另行判断是否需要停止对应的程序。当然也可以简化处理:全部先停止,然后再全部启动。在启动程序时,可能需要设置当前目录: SetCurrentDir(ExtractFileDir(Application.ExeName);1.4 相关信息:1、 怎样根据文件名杀死对应的进程?a) 干干净净地杀死进程 /document/viewdoc/?id=415b) Windows 2000/XP两个杀死进程的命令Windows 2000/XP两个杀死进程的命令 /showGroupWeb.aspx?ArticleID=330191&GroupID=38其中以命令taskkill最为简单,例如:taskkill /f /im txyfts.exe2 升级信息文件升级信息文件的格式:#date=MM/DD/YYYY (标志版本的日期,当控件的VersionControl=byDate时生效)#version=any string (标志版本的字符串,当控件的VersionControl=byNumber时生效)#url1=/download/MyApp.exe (主文件的下载URL)#url2=/download/MyApp.dll (以下是其他文件的下载URL).#urlN=/download/ReleaseNotes.txt#method=0 (由控件负责升级) (向用户显示的消息放在一对花括号即中)#message=消息的第一行第二行第三行升级信息文件放在升级服务器上,记下它的URL。3 TacAutoUpgrader的使用在程序主窗体放置一个TacAutoUpgrader,假设命名为au。为方便测试,暂定为用字符串作版本控制。于是设置VersionControl属性为byNumber。设置属性InfoFileURL为前面记下的升级信息文件的URL,如70/txy_server/newver.inf设置属性VersionNumber为当前版本串,如。这是任意的,只要新旧值不同,控件就认为有新版了。旧版的OnDoOwnCloseAppMethod事件处理器中要为下次升级作准备,例如结束一些进程,注意包括主程序本身。如:procedure TMainForm.auDoOwnCloseAppMethod(Sender: TObject);begin WinExec(taskkill /f /im txyfts.exe, SW_SHOWNORMAL); WinExec(taskkill /f /im scktsrvr.exe, SW_SHOWNORMAL); Close; Application.Terminate;end;新版的OnAfterRestart事件处理器中再启动这些进程。如:procedure TMainForm.auAfterRestart(Sender: TObject);begin SetCurrentDir(ExtractFileDir(Application.ExeName); WinExec(net start SocketServer, SW_SHOWNORMAL); WinExec(txyfts.exe, SW_SHOWNORMAL);end;若要让控件自动检查升级,只需设置属性:AutoCheck := True。若自行检查升级,也只需调用方法:CheckUpdate()。4 静默升级怎样实现有选择的静默升级呢?首先,在升级服务器上放置一个标志文件,例如silent.txt,内容任意,也可以是0字节文件。然后在程序中:1、 在事件OnBeginUpgrade处理器中,检查参数Files中是否包含名为silent.txt的文件,若包含,表示要作静默升级。2、 若是静默升级,则所有对话框都不显示:a) ShowMessages := ;b) Wizard.Enabled := False;3、 升级完毕,删除下载过来的silent.txt文件。于是,最终的相关代码如下:/ 读到升级信息文件后的处理procedure TMainForm.auBeginUpgrade(Sender: TObject; const UpgradeMsg: String; UpgradeMethod: TacUpgradeMethod; Files: TStringList; var CanUpgrade: Boolean);var i: Integer; s: string; bSilent: Boolean;begin CanUpgrade := Files.Count 0; if not CanUpgrade then Exit; for i := 0 to Files.Count - 1 do begin if Pos(silent.txt, Filesi) 0 then begin bSilent := True; Break; end; end; if bSilent then begin au.ShowMessages := ; / 静默方式,所有对话框都不显示 au.Wizard.Enabled := False; Exit; end; / 非静默方式,询问用户是否升级/ CanUpgrade := MessageBox(Handle, PChar(UpgradeMsg), 是否升级?, MB_YESNO) = IDYES; / 注释掉 是想使用控件自己的询问对话框end;/ 新版主程序第一次启动后的处理procedure TMainForm.auAfterRestart(Sender: TObject);var appDir, s: string;begin / 设置当前目录 appDir := ExtractFileDir(Application.ExeName); SetCurrentDir(appDir); / 删除静默升级的标志文件 s := appDir + silent.txt; if FileExists(s) then DeleteFile(s); / 启动其他必需的进程 WinExec(net start SocketServer, SW_SHOWNORMAL); WinExec(PChar(appDir + txyfts.exe), SW_SHOWNORMAL);end;/ 下一次升级时,在更新文件前需要关闭的进程procedure TMainForm.auDoOwnCloseAppMetho

温馨提示

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

评论

0/150

提交评论