有关如何更新原来的exe程序! |
缺席
|
jtp
初階會員 發表:39 回覆:81 積分:29 註冊:2003-04-20 發送簡訊給我 |
我写了一个程序,放在一个公用文件夹中。我打算就是当程序每次自动运行的时候就与先前的exe文件做比较,看否更新,我写了段代码如下,但不行!可能须要做一个批处理文件之类的,还请各位指教在下如何做 var
str,str1:string;
begin
//程序更新**********************************************************//
str:=trim(datetimetostr(filedatetodatetime(fileage('\\mail\public\main.exe'))));
str1:=trim(datetimetostr(filedatetodatetime(fileage('c:\case\main.exe'))));
if str <> str1 then
begin
if application.messagebox('程序已有更新,是否需更新您的生管系统?', '提示', MB_yesno mb_iconquestion)=idyes then
begin
copyfile(pchar('\\mail\public\main.exe'),pchar('c:\case\main.exe'),false);
//movefileex(pchar('\\mail\public\main.exe'),pchar('c:\case\main.exe'),movefile_replace_existing);
application.messagebox('程序更新完毕,请重新启动程序!', '系统提示', MB_OK mb_iconinformation);
end else
begin
halt;
end;
end;
|
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
const
my_wm_user=wm_user+$100;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
procedure updatex(var msg:tmessage);message my_wm_user;
procedure updatefile( filename1,filename2:string);
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.dfm}
procedure tform1.updatefile( filename1,filename2:string);
var f:textfile;
begin
assignfile(f,ExtractFilePath(application.ExeName) '\upme.bat');
rewrite(f);
writeln(f,'@echo off');
writeln(f,':loop');
writeln(f,'copy "' filename1 '" "' filename2 '"');
writeln(f,'if exist ' filename2 ' goto loop');
writeln(f,'del "' ExtractFilePath(application.ExeName) 'upme.bat"');
closefile(f);
winexec(pchar(ExtractFilePath(application.ExeName) '\upme.bat'),SW_HIDE);
if application.messagebox('程序更新完毕,请重新启动程序!', '系统提示', MB_OK mb_iconinformation)=idok then
application.Terminate ;
end ; procedure TForm1.updatex(var msg:tmessage);
begin
if msg.WParam =$AAA then
begin
copyfile(pchar('c:\update\file1.exe'),pchar('c:\file1.exe'),false);
if application.messagebox('程序更新完毕,请重新启动程序!', '系统提示', MB_OK mb_iconinformation)=idok then
application.Terminate ;
end;
end; procedure TForm1.FormCreate(Sender: TObject);
var
str,str1:string;
begin
//程序更新**********************************************************//
str:=trim(datetimetostr(filedatetodatetime(fileage('c:\update\file1.exe'))));
str1:=trim(datetimetostr(filedatetodatetime(fileage('c:\file1.exe'))));
if str <> str1 then
if application.messagebox('程序已有更新,是否需更新您的生管系统?', '提示', MB_yesno mb_iconquestion)=idyes then
//方式一[最好],可以更新其它文件或自己哦
updatefile('c:\update\file1.exe','c:\file1.exe');
//方式二[也不错],可以更新其它文件哦
// postmessage(handle, my_wm_user,$AAA,0);
end; end. 我又想到更好的方法,就是您说的bat文件新式哦 發表人 -
|
jtp
初階會員 發表:39 回覆:81 積分:29 註冊:2003-04-20 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
|
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |