Показать сообщение отдельно
  #1  
Старый 18.03.2013, 20:55
GrabbeR GrabbeR вне форума
Новичок
 
Регистрация: 15.03.2012
Сообщения: 53
Версия Delphi: 7
Репутация: 10
По умолчанию 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;
Ответить с цитированием