Мужики, делаю деинсталлятор и тут трабла. Если запустить 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;