关于自动升级控件:AutoUpgrader.Pro 的用法:(200)

  • 主题发起人 主题发起人 jlcsx
  • 开始时间 开始时间
J

jlcsx

Unregistered / Unconfirmed
GUEST, unregistred user!
关于自动升级控件:AutoUpgrader.Pro 的用法:服务器能否使用FTP?如何使用,请大家赐教
 
那个控件不是有DEMO吗?动手测试一下就知道了。
 
摘自网上:AutoUpgrader简单教程(写给初学者)1.放置一个TauAutoUpgrader在窗体上2.双击auAutoUpgrader1,在弹出的对话框中设定一些要件:首先选择按日期还是按版本号检查更新并填好日期或版本号(该日期或版本号也可以在会同时记录在VersionData属性里,版本号主要通过该属性来检查),然后单击add按钮添加需要更新的文件的http下载地址,因AutoUpgrader仅支持http方式,不支持ft方式,所以不要填错。Upgrade method默认即可;然后在“Release Notes Message”里面写好本次的更新内容;3.单击“Export to info-file”导出到inf文件,并将这个文件上传至你的网站,以备更新程序检测。4.在InfoFileURL属性里面输入你上传到自己网站的那个inf文件,更新程序是通过该inf文件来确定你每次需要更新的内容。5.如果你希望程序自动检查更新,那么你需要把auAutoUpgrader1的autocheck设为true;6.窗体上添加一个按钮bt1,caption属性改为“检查更新”,在bt1的onclick事件里面写上 auAutoUpgrader1.CheckUpdate(False);7.如果你需要当检查到没有更新时提示用户,那么将auAutoUpgrader1的showmessages的mNoUpdateAvailable属性设为true即可。好了,马上去体验吧!装AutoUpgrader控件的时候,还会装上另外两个控件,有一个TauThread(用于 D6、7的线程组件),简单用了一下还不错,看来以后写线程方便多了。另外还有auHTTP(支持文件上传、IE缓存)、不知道怎么用,有时间再看吧。
 
谢谢楼上,有没有支持FTP的自动升级控件?
 
仍摘自网上:程序中FTP下载采用了INDY的FTP控件(DELPHI7自带的),开发环境是(Win2000,Delphi 7)procedure TFrmMain.BitBtn1Click(Sender: TObject);var tmpini:Tinifile; tver,tsys:string;begin BitBtn2.Click; if MessageDlg('升级前请务必关闭业务管理系统,你已经关闭了吗?', mtWarning, [mbYes, mbNo], 0) = mrNo then begin showmessage('只有在关闭了业务管理系统后才能升级!请先关闭系统!'); exit; end; BitBtn4.Visible:=True; tmpini:=TiniFile.Create(extractfilepath(application.ExeName)+'system.ini'); tver:=tmpini.ReadString('system','Version',''); tsys:=tmpini.ReadString('system','Program',''); if tver='' then begin tmpini.WriteString('system','Version','1.0'); tver:='1.0'; end; if tsys='' then tsys:='branch'; tmpini.Free; getnewfile('set',tver,tsys); if tver<NewVer then begin getnewfile('Files',tver,tsys); end else showmessage('已经是最新版本!');end;procedure TFrmMain.getnewFile(sfile:string;const tver:string='';tsys:string='branch');var appini,appini1:Tinifile; i,compr:integer; tfiles,dfiles,tdir:string;begin idFTP1.Host:=LabeledEdit3.Text; idFTP1.Username:=LabeledEdit1.Text; idFTP1.Password:=labeledEdit2.Text; if not idFTP1.Connected then try idFTP1.Connect; except showmessage('不能连接远程服务器,请查原因!'); abort; end; idFTP1.ChangeDir('/down/'); IdFTP1.TransferType := ftBinary; //下载配置文件 if sfile='set' then begin dfiles:=extractfilepath(application.ExeName)+'UPdate.ini'; BytesToTransfer:=idFTP1.Size('update.ini'); idFTP1.Get('update.ini',dfiles,True); appini:=Tinifile.Create(extractfilepath(application.ExeName)+'update.ini'); NewVer:=appini.ReadString('CanDown','Version',''); oldVer:=Tver; appini.Free; end else begin //下载升级文件 //检查下载文件保存路径是否存在 tdir:=LabeledEdit4.Text; if tdir[length(tdir)]<>'/' then tdir:=tdir+'/'; if not directoryexists(tdir+'update/') then mkdir(tdir+'update/'); appini:=Tinifile.Create(extractfilepath(application.ExeName)+'update.ini'); icount:=appini.ReadInteger(tsys,'FileCounts',0); compr:=appini.ReadInteger(tsys,'compress',0); if (OldVer<>'') and (OldVer>NewVer) then begin showmessage('已经是最新版本了!'); appini.Free; exit; end; if OldVer<NewVer then begin appini1:=TiniFile.Create(extractfilepath(application.ExeName)+'system.ini'); appini1.WriteString('system','Version',Newver); appini1.Free; end; if icount>0 then begin idFTP1.ChangeDir('/down/'+tsys); for i:=1 to icount do begin tfiles:=appini.ReadString(tsys,'File'+inttostr(i),''); if tfiles<>'' then begin staticText2.Caption:='正在下载文件:'+tfiles; BytesToTransfer:=idFTP1.Size(tfiles); idFTP1.Get(tfiles,tdir+'update/'+tfiles,True); end; end; appini.Free; CopyFileToUse(compr,tsys); end; end;end;//将新下载的文件拷贝到程序目录中procedure TFrmMain.CopyFileToUse(Compr:integer;const tsys:string='branch');var appini:Tinifile; i,j:integer; tfiles,tdir,tmp1:string;begin tdir:=LabeledEdit4.Text; if tdir[length(tdir)]<>'/' then tdir:=tdir+'/'; appini:=Tinifile.Create(extractfilepath(application.ExeName)+'/update.ini'); i:=appini.ReadInteger(tsys,'FileCounts',0); if i>0 then begin for j:=1 to i do begin tfiles:=appini.ReadString(tsys,'File'+inttostr(j),''); if tfiles<>'' then begin staticText2.Caption:='正在更新文件:'+tfiles; if compr=1 then begin tmp1:=tdir+'rar e '+tdir+'update/'+tfiles+' -y '+tdir; // WinexecAndWait32(tmp1,sw_show); WinexecAndWait32(tmp1,sw_hide); end else CopyFile(tdir+'update/'+tfiles,tdir+tfiles); end;
 
接受答案了.
 
后退
顶部