Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2013, 20:52   #1
GrabbeR
Пользователь
 
Регистрация: 17.03.2010
Сообщений: 44
По умолчанию Uninstall (самоудаление)

Мужики, делаю деинсталлятор и тут трабла. Если запустить Uninstall.exe из папки программы то директория не удалится из-за запущенного экземпляра. Как можно еще удалить Uninstall.exe вместе с папкой, где он находится? От перестановки действий результат с ошибками.

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
   reg: TRegistry;
   sFileMask, StartGroup, InstFolder, Temp, AppName : string;
   F: TextFile;
begin
   reg := TRegistry.Create;
   try
//Удаление группы в меню Пуск
      reg.OpenKey('Software\MyCompany\ICT', true);
      StartGroup := reg.ReadString('StartGroup');
      MyRemoveDir(GetSpecialFolderPath(CSIDL_COMMON_PROGRAMS) + '\' + StartGroup);
//Удаление самой папки с программой
      InstFolder := reg.ReadString('Installation directory');
      MyRemoveDir(InstFolder);
//Удаление ярлыка на Рабочем столе
      sFileMask := GetShortcutFolder(sfDesktop) + 'Ruo.lnk';
      DeleteFile(sFileMask);
//Удаление ветки в реестре
      reg.CloseKey;
      reg.DeleteKey('Software\MyCompany\ICT');
   finally
      reg.Free
   end;

//Самоудаление файла
      Temp:= 'delete.bat';
      AppName:= ExtractFileName(ParamSTR(0));
      AssignFile(F, Temp);
      Rewrite(F);
      Writeln(F, 'del ' + AppName);
      Writeln(F, 'del ' + Temp);
      CloseFile(F);
      WinExec(PCHar(Temp),SW_HIDE);
      Halt;
end;
GrabbeR вне форума Ответить с цитированием
Старый 18.03.2013, 21:17   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Цитата:
Как можно еще удалить Uninstall.exe вместе с папкой, где он находится?
Создать батник типа:
Код:
:try
Del Uninstall.exe
del ./
if FileExists('Uninstall.exe') then goto try

как-то так.
Человек_Борща вне форума Ответить с цитированием
Старый 18.03.2013, 22:29   #3
GrabbeR
Пользователь
 
Регистрация: 17.03.2010
Сообщений: 44
По умолчанию

Удаляет все файлы в каталоге. А папку в целом?
GrabbeR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
самоудаление DeDoK Общие вопросы Delphi 10 31.01.2021 23:26
Самоудаление файла. iLnes Общие вопросы Delphi 23 15.02.2012 12:57
Install, Uninstall FaTaL Общие вопросы Delphi 8 25.12.2010 07:08
Самоудаление и автозапуск CyberViper Общие вопросы Delphi 1 31.05.2010 11:55