PDA

View Full Version : چگونه می توان برنامه در حال اجرا را حذف کرد؟



Mah6447
یک شنبه 25 شهریور 1386, 20:52 عصر
باز هم سلام
درود بر همت شما
واقعلا با وجود شما دوستان هیچ مشکلی باقی نخواهد ماند.
باز هم سوال باز هم سوال

مشکل بزرگ دیگر این است که در زمان تغییر نسخه برنامه ، می خواهم برنامه با تشخیص تغییر
نسخه برنامه فایل جدید اجرایی برنامه را به جای برنامه اصلی کپی کند و برنامه با پیامی دوباره
اجرا شود.

Valadi
یک شنبه 25 شهریور 1386, 21:05 عصر
این کد حذف فایل اجرایی

procedure DeleteEXE;

function GetTmpDir: string;
var
pc: PChar;
begin
pc := StrAlloc(MAX_PATH + 1);
GetTempPath(MAX_PATH, pc);
Result := string(pc);
StrDispose(pc);
end;

function GetTmpFileName(ext: string): string;
var
pc: PChar;
begin
pc := StrAlloc(MAX_PATH + 1);
GetTempFileName(PChar(GetTmpDir), 'uis', 0, pc);
Result := string(pc);
Result := ChangeFileExt(Result, ext);
StrDispose(pc);
end;

var
batchfile: TStringList;
batchname: string;
begin
batchname := GetTmpFileName('.bat');
FileSetAttr(ParamStr(0), 0);
batchfile := TStringList.Create;
with batchfile do
begin
try
Add(':Label1');
Add('del "' + ParamStr(0) + '"');
Add('if Exist "' + ParamStr(0) + '" goto Label1');
Add('rmdir "' + ExtractFilePath(ParamStr(0)) + '"');
Add('del ' + batchname);
SaveToFile(batchname);
ChDir(GetTmpDir);
ShowMessage('Uninstalling program...');
WinExec(PChar(batchname), SW_HIDE);
finally
batchfile.Free;
end;
Halt;
end;
end;