Как удалить файл из самого себя
Как удалить самого себя ??
Широко известна проблема, связанная с тем, что невозможно удалить запущенный EXE файл. Следовательно, возникает проблема при написании деинсталлятора - он удалит файлы программы, но кто удалит его (сам себя он удалить не может). На самом деле у данной проблемы есть два решения:
Решение при помощи BAT файла
1. Создаем в любой папке BAT файл del_prg.bat следующего содержания
@echo off
:del_loop
del [полное имя и путь к EXE файлу]
if exist [полное имя и путь к EXE файлу] goto del_loop
del [полное имя bat файла]
2. Запускаем его
3. Завершаем работу EXE файла. BAT файл будет крутится по циклу до тех пор, пока ему не удатся удалить EXE файл. Затем он самоуничтожится - этому ничто не препятствует, т.к. bat файлыв могут стирать сами себя без проблем
Решение при помощи реестра
1. Создаем ключ в ветви реестра HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunOnce с любым именем, например del_self и значением del [полное имя и путь к EXE файлу]
2. Просим пользователя перезагрузить компьютер (или делаем это принудительно). Команда из ключа сработает при следующей загрузке и будет автоматически удалена из реестра
Широко известна проблема, связанная с тем, что невозможно удалить запущенный EXE файл. Следовательно, возникает проблема при написании деинсталлятора - он удалит файлы программы, но кто удалит его (сам себя он удалить не может). На самом деле у данной проблемы есть два решения:
Решение при помощи BAT файла
1. Создаем в любой папке BAT файл del_prg.bat следующего содержания
@echo off
:del_loop
del [полное имя и путь к EXE файлу]
if exist [полное имя и путь к EXE файлу] goto del_loop
del [полное имя bat файла]
2. Запускаем его
3. Завершаем работу EXE файла. BAT файл будет крутится по циклу до тех пор, пока ему не удатся удалить EXE файл. Затем он самоуничтожится - этому ничто не препятствует, т.к. bat файлыв могут стирать сами себя без проблем
Решение при помощи реестра
1. Создаем ключ в ветви реестра HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunOnce с любым именем, например del_self и значением del [полное имя и путь к EXE файлу]
2. Просим пользователя перезагрузить компьютер (или делаем это принудительно). Команда из ключа сработает при следующей загрузке и будет автоматически удалена из реестра
------------ Дoбавленo в 19.49:
осталось дописать например батник на переименование скаченного апдейта и удаление основной программы.
Для изучения BAT файлов ищи в гугле по соответствующему запросу.