실행파일은 일반적인 시스템 함수로는 자기자신을 지우지 못한다.
그래서 .bat 파일을 이용한다.
uses
.. Classes, ShellApi;
procedure DeleteMySelf;
var
BatchPath: String;
sList: TStringList;
begin
// 경로 세팅
BatchPath:=ExtractFilePath(ParamStr(0))+'del.bat';
// .bat 파일 생성
sList:=TStringList.Create;
try
sList.Add(':DEL1');
sList.Add('del "'+ParamStr(0)+'"');
sList.Add('IF EXIST "'+ParamStr(0)+'" GOTO DEL1');
sList.Add(':DEL2');
sList.Add('del "'+BatchPath+'"');
sList.Add('IF EXIST "'+BatchPath+'" GOTO DEL2');
sList.SaveToFile(BatchPath);
finally
FreeAndNil(sList);
end;
// bat 실행 (실행파일 삭제->bat 파일 삭제)
ShellExecute(0, 'open', PChar(BatchPath), nil, nil, SW_HIDE);
end;
.. Classes, ShellApi;
procedure DeleteMySelf;
var
BatchPath: String;
sList: TStringList;
begin
// 경로 세팅
BatchPath:=ExtractFilePath(ParamStr(0))+'del.bat';
// .bat 파일 생성
sList:=TStringList.Create;
try
sList.Add(':DEL1');
sList.Add('del "'+ParamStr(0)+'"');
sList.Add('IF EXIST "'+ParamStr(0)+'" GOTO DEL1');
sList.Add(':DEL2');
sList.Add('del "'+BatchPath+'"');
sList.Add('IF EXIST "'+BatchPath+'" GOTO DEL2');
sList.SaveToFile(BatchPath);
finally
FreeAndNil(sList);
end;
// bat 실행 (실행파일 삭제->bat 파일 삭제)
ShellExecute(0, 'open', PChar(BatchPath), nil, nil, SW_HIDE);
end;
'Delphi' 카테고리의 다른 글
[Delphi] Listbox Item 선택하기. (List, SendMessage, LB_SETCURSEL, LB_GETITEMRECT) (0) | 2010.07.14 |
---|---|
[Delphi] DLL의 폼을 Splash 윈도우로 사용하기 (CreateParams) (0) | 2010.07.08 |
[Delphi] 디렉토리 삭제,복사,이동,이름바꾸기 (ShFileOperation, TShFileOpStruct) (0) | 2010.07.07 |
[Delphi] 암호화 (델마당의 박후선님 作) (2) | 2010.07.02 |
[Delphi] IPC - FileMapping [CreateFileMapping, OpenFileMapping, MapViewOfFile] (0) | 2010.07.02 |