В інтернеті переглядаючи форуми з програмування я натрапляв на питання пов'язані c питанням "Як програму змусити видалити або перейменувати себе під час виконання". У цій статті описується самий елементарний спосіб.
Borland Delphi бажано 7 - вимагає установки
Блокнот (notepad.exe) - стоїть на всіх комп'ютерах з Windows
cmd.exe - стоїть на всіх комп'ютерах з Windows
Навіщо нам потрібен блокнот і cmd.exe запитаєте ви?
Ми для вирішення цього завдання будемо використовувати Пакетний файл, докладніше: У Вікіпедії
Функція для видалення:
function RemoveApp. boolean;
batfile. TextFile; // змінна файлу
try // блок try..except для обробки винятків (помилок)
RemoveApp: = true; // в результат повертається функції ставимо значення: істина
AssignFile (batfile, 'Del.bat'); // присвоюємо файл змінної
ReWrite (batfile); // Відкриваємо для перезапису (якщо існує файл повторно, інакше створиться)
ChDir (ExtractFilePath (ParamStr (0))); // міняємо поточну директорію (з якої працює програма) на директорію в якій знаходиться виконуваний файл
WriteLn (batfile, 'del' + ExtractFileName (ParamStr (0))); // записуємо в файл команду видалення del
WriteLn (batfile, 'del Del.bat'); // пишемо це для самознищення пакетного файлу
CloseFile (batfile); // закриваємо файл
WinExec ( 'Del.bat', SW_SHOW); // запускаємо пакетний файл який був створений програмою
ExitProcess (0); // завершуємо програму
RemoveApp: = false; // якщо відбувається помилка повертаємо брехня
Функція для перейменування:
function RenameApp (newname. string). boolean;
batfile. TextFile; // змінна файлу
try // блок try..except для обробки винятків (помилок)
RenameApp: = true; // в результат повертається функції ставимо значення: істина
AssignFile (batfile, 'Rem.bat'); // присвоюємо файл змінної
ReWrite (batfile); // Відкриваємо для перезапису (якщо існує файл перезапише, інакше створиться)
ChDir (ExtractFilePath (ParamStr (0))); // міняємо поточну директорію (з якої працює програма) на директорію в якій знаходиться виконуваний файл
WriteLn (batfile, 'ren' + ExtractFileName (ParamStr (0)) + '' + newname); // записуємо в файл команду перейменування ren
WriteLn (batfile, 'del Rem.bat'); // пишемо це для самознищення пакетного файлу
CloseFile (batfile); // закриваємо файл
WinExec ( 'Rem.bat', SW_SHOW); // запускаємо пакетний файл який був створений програмою
ExitProcess (0); // завершуємо програму
RenameApp: = false; // якщо відбувається помилка повертаємо брехня
Як бачите нічого складного тут немає. Ці функції не вимагають ніяких додаткових модулів.