L
littlefat
Unregistered / Unconfirmed
GUEST, unregistred user!
原文URL:http://www.delphipages.com/threads/thread.cfm?ID=113187&G=113166<br><br>//大意是建立以下的批处理:<br>//elete_Exe<br>//if exist %1 goto Delete_Exe<br><br>稍加修改可以编程自动升级客户端的程序<br>//elete_Exe<br>//if exist %1 goto Delete_Exe<br>//%1<br><br>procedure TForm1.DelExe;<br>const<br>cBatCode=':delete_exe'+#13 +'del %s'+#13 +'if exist %s goto delete_exe'+#13 +'del %s';<br>var<br> List:TStringList;<br> BatPath:string;<br> S:string;<br> PI:TProcessInformation;<br> SI:TStartupInfo;<br>begin<br> BatPath:=ChangeFileExt(ParamStr(0),'.BAT');<br> List:=TStringList.Create;<br> try<br> S:=Format(cBatCode,[ParamStr(0),ParamStr(0),BatPath]);<br> List.Text:=S;<br> List.SaveToFile(BatPath);<br> finally<br> List.Free;<br> end;<br><br> FillChar(SI,SizeOf(SI),0);<br> SI.dwFlags:=STARTF_USESHOWWINDOW;<br> SI.wShowWindow:=SW_HIDE;<br><br> If CreateProcess(nil,PChar(BatPath),nil,nil,False,<br>IDLE_PRIORITY_CLASS,nil,nil,SI,PI) then<br> begin<br> CloseHandle(PI.hThread);<br> CloseHandle(PI.hProcess);<br> end;<br>end;<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>begin<br> DelExe; //执行删除自身<br> Close; //一定要退出后才能删除,原文没有这一行,查看批处理,实际上是一个死循环,如程序不主动退出则无法删除。<br>end;<br><br>题外话,我想做一个自动升级客户端程序的功能,比如在局域网中约定一个共享目录中始终存放最新版本的程序,客户端每次启动时检查该共享目录中是否有新版本,如果有,则下载,然后删除自身,最后再运行新下载的版本。有一个问题是,根据什么来判断共享目录中的程序比当前的要新?<br><br>