Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > ОС и железо
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #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;
Ответить с цитированием
  #2  
Старый 18.03.2013, 20:57
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Обычно батник зацикливается до момента удаления приложения, иначе он может отработать до закрытия приложения.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #3  
Старый 18.03.2013, 21:08
GrabbeR GrabbeR вне форума
Новичок
 
Регистрация: 15.03.2012
Сообщения: 53
Версия Delphi: 7
Репутация: 10
По умолчанию

Если без удаления папки, то нормально все работает. Может быть при установке стоит извлечь Uninstall.exe в системную папку, к примеру, и оттуда его запускать при деинсталляции?
Ответить с цитированием
  #4  
Старый 18.03.2013, 21:13
Аватар для BBBCat
BBBCat BBBCat вне форума
Новичок
 
Регистрация: 10.03.2013
Сообщения: 73
Репутация: 10
По умолчанию

Создавай батник этажом выше. Или вообще в корне.

Последний раз редактировалось BBBCat, 18.03.2013 в 21:16.
Ответить с цитированием
  #5  
Старый 18.03.2013, 21:33
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

InnoSteup куда-то в темп выгружает файлик и запускает его.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #6  
Старый 18.03.2013, 22:07
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от GrabbeR
Если без удаления папки..
Открой папку любой программы, которую хочешь удалить и большинство деинсталляторов не смогут её удалить.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #7  
Старый 18.03.2013, 23:22
GrabbeR GrabbeR вне форума
Новичок
 
Регистрация: 15.03.2012
Сообщения: 53
Версия Delphi: 7
Репутация: 10
По умолчанию

Значит ерундовые деинсталляторы. Пишу нормальный. Пошел след. методом: Install.exe во время установки копирует уже распакованный Uninstall.exe и Delete.bat в системную папку. Оттуда через Пуск юзер запускает его и все полностью удаляется, после чего запускается батник и удаляет Uninstall.exe =)
Ответить с цитированием
  #8  
Старый 18.03.2013, 23:52
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от GrabbeR
Значит ерундовые деинсталляторы. Пишу нормальный.
Насмешил до слёз умник. Когда папка открыта, она становится "захваченной". Учи матчасть горе программист.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #9  
Старый 19.03.2013, 00:32
GrabbeR GrabbeR вне форума
Новичок
 
Регистрация: 15.03.2012
Сообщения: 53
Версия Delphi: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от angvelem
Когда папка открыта, она становится "захваченной".
Это само собой понятно. Вопрос был в том, как выйти из этого положения.
Ответить с цитированием
  #10  
Старый 19.03.2013, 00:54
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Тебе здесь (http://www.cyberforum.ru/delphi-winapi/) уже ответили.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #11  
Старый 19.03.2013, 02:51
GrabbeR GrabbeR вне форума
Новичок
 
Регистрация: 15.03.2012
Сообщения: 53
Версия Delphi: 7
Репутация: 10
По умолчанию

Уже по-своему сделал, получилось. Спасибо всем.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:41.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter