Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата user_123:
Подскажите, как сделать, чтобы выводился запрос на удаление подкаталога {app}\log (по умолчанию не должен удаляться)при деинсталляции приложения?

Код: Выделить весь код
function <...>(): Boolean;
begin
 if MsgBox(''+ ExpandConstant('{cm:removelogs}') +'', mbInformation, mb_YesNo) = idYes then
 begin
 <...>
 end;
end;
»
Отвечаю сам на свой вопрос.
Кое-что написал сам (по образцу (скачивал с вашего форума) некоторых скриптов):
Код: Выделить весь код
procedure InitializeUninstallProgressForm();
begin
  if MsgBox(CustomMessage('MyCustomMessage'), mbConfirmation, MB_YESNO) = IDYES then
    DelTree(ExpandConstant('{app}\subdir'),True,True,True)
end;
Вроде бы работает... Но есть некоторые трудности... Перед тем как удалить программу, надо завершить её процесс... У меня не получается реализовать это в деинсталляторе через секцию code по Вашим образцам, istask.dll распаковывается в папку деинсталлятора... компилятор сообщает о синтаксических ошибках (я с образца всё верно переписал и оптимизировал под свою прогрмму)... В инсталляторе я сделал, работает нормально... Пробовал для деинсталлятора прописать по образцу инсталлятора - скомпилировалось без проблем, но при запуске деинсталятора появилась ошибка...

Закрытие программы я реализовал так:
Код: Выделить весь код
[UninstallRun]
Filename: {sys}\taskkill.exe; Parameters: /f /im MyProg.exe /t; Flags: runhidden
Всё было бы замечательно, если бы это выполнялось ДО удаления {app}\subdir... Но после стандартного запроса об удалении программы.

Может, достаточно написать другую процедуру... подскажите, пожалуйста, какую...

Последний раз редактировалось user_123, 05-10-2009 в 19:00.


Отправлено: 00:30, 05-10-2009 | #207