![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Мужики, делаю деинсталлятор и тут трабла. Если запустить 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
|
||||
|
||||
|
Обычно батник зацикливается до момента удаления приложения, иначе он может отработать до закрытия приложения.
|
|
#3
|
|||
|
|||
|
Если без удаления папки, то нормально все работает. Может быть при установке стоит извлечь Uninstall.exe в системную папку, к примеру, и оттуда его запускать при деинсталляции?
|
|
#4
|
||||
|
||||
|
Создавай батник этажом выше. Или вообще в корне.
Последний раз редактировалось BBBCat, 18.03.2013 в 21:16. |
|
#5
|
||||
|
||||
|
InnoSteup куда-то в темп выгружает файлик и запускает его.
|
|
#6
|
||||
|
||||
|
Цитата:
|
|
#7
|
|||
|
|||
|
Значит ерундовые деинсталляторы. Пишу нормальный. Пошел след. методом: Install.exe во время установки копирует уже распакованный Uninstall.exe и Delete.bat в системную папку. Оттуда через Пуск юзер запускает его и все полностью удаляется, после чего запускается батник и удаляет Uninstall.exe =)
|
|
#8
|
||||
|
||||
|
Цитата:
|
|
#9
|
|||
|
|||
|
Цитата:
|
|
#10
|
||||
|
||||
|
Тебе здесь (http://www.cyberforum.ru/delphi-winapi/) уже ответили.
|
|
#11
|
|||
|
|||
|
Уже по-своему сделал, получилось. Спасибо всем.
|