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

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

Ветеран


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

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


AnalogXP,
1-ый вопрос
Так всё правильно, вы используете флаг waituntilidle
Цитата из Справки:
Если установлен этот флаг, инсталляция остановится и подождет, пока пользователь введет необходимые ей данные, вместо того, чтобы ожидать окончания процесса. (Как функция Win32 WaitForInputIdle). Не комбинируется с nowait.
Вам нужен флаг waituntilterminated
Цитата из Справки:
Если указан этот флаг, инсталлятор подождет, пока процесс полностью завершится. Обратите внимание, что этот флаг всегда задается по умолчанию (т.е. для того, чтобы инсталлятор подождал, пока завершится процесс, этот флаг указывать не обязательно). Указывается он только в комбинации с флагом shellexec - в этом случае это необходимо, если инсталлятор должен дождаться завершения процесса. Не комбинируется с флагами nowait и waituntilidle.
т.е. вам надо записать так:
Код: Выделить весь код
[UninstallRun]
Filename: {app}\Feedback.exe; Flags: waituntilterminated

3-ий и 4-ый вопрос
напишите в секции Code, следующее:
Код: Выделить весь код
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
  If CurUninstallStep = usDone then
  // проверяем существование папки после удаления программы
  if DirExists(ExpandConstant('{userappdata}\My Program')) = True then
  // если существует, то удаляем её со всеми подпапками и файлами которые остались
  DelTree(ExpandConstant('{userappdata}\My Program'), True, True, True);
  // путь к папке (Application Data) - {userappdata} - для текущего пользователя, {commonappdata} - для всех пользователей
end;
Должно работать и на Vista, но проверить негде.

По второму вопросу, чуть позже...

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:11, 02-04-2009 | #548