Вопрос Пропуск страницы с подтверждением

AtotIK

Новичок
Привет всем! Нужно сделать так, что бы инсталлятор предлагал пропустить следующую страницу ещё до её создания, т.е. был бы выбор устанавливать ли содержимое следующей страницы или сразу приступить к установке.

Данные располагаются на wpSelectTasks, после неё только скрытая через DisableReadyPage=yes страница.
Пока получилось только так, но криво - после нажатия далее (или пропуска) MsgBox появляется ещё 2 раза (даже если начать с другой страницы). Приходится каждый раз нажимать что-нибудь для продолжения установки.
Код:
SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0);
SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0);
при этом не помогают пропустить эти страницы.

Сам код:
Код:
function ShouldSkipPage(PageID: Integer): Boolean;
begin
  If PageID=wpSelectTasks then
begin
  If MsgBox('Установить дополнительные апплеты?' #10#10 'Да - выбрать из списка и установить, Нет - перейти к установке программы', mbInformation, MB_YESNO)=IDYES then
begin
  Result:=False;
end
else
  Result:=True;
end;
end;
Кручусь на одном месте уже 2 часа, в голове уже каша из-за этого. Может ещё вариант есть (через NextButtonClick)? Прошу Вашей помощи в решении проблемы!
 
Последнее редактирование:

YURSHAT

Тех. админ
Администратор
Ну, если я Вас правильно понял :), то
Код:
function ShouldSkipPage(PageID: Integer): Boolean;
begin
  If PageID = wpSelectTasks then
    Result := MsgBox('Установить дополнительные апплеты?' #10#10 'Да - выбрать из списка и установить, Нет - перейти к установке программы', mbInformation, MB_YESNO) = IDNO;
end;
 

AtotIK

Новичок
YURSHAT, поняли правильно, но всё же MsgBox так же появляется ещё несколько раз. Даже тут:
Код:
[Setup]
AppName=Test
AppVerName=Test
DefaultDirName={pf}\Test

[Tasks]
Name: "ANSI"; Description: "ANSI"; GroupDescription: "Какая версия установлена?"; Flags: exclusive unchecked;
Name: "Unicode"; Description: "Unicode"; GroupDescription: "Какая версия установлена?"; Flags: exclusive;
Name: "v100"; Description: "v1.00 ~ 1.02"; GroupDescription: "Версия API?"; Flags: exclusive unchecked;
Name: "v103"; Description: "v1.03 ~ v1.04"; GroupDescription: "Версия API?"; Flags: exclusive unchecked;

[_Code]
function ShouldSkipPage(PageID: Integer): Boolean;
begin
  If PageID = wpSelectTasks then
    Result := MsgBox('Установить дополнительные апплеты?' #10#10 'Да - выбрать из списка и установить, Нет - перейти к установке программы', mbInformation, MB_YESNO) = IDNO;
end;
 

YURSHAT

Тех. админ
Администратор
AtotIK, вы поставили задачу, согласно которой
скрытая через DisableReadyPage=yes страница
И соответственно постановленному условию я и дал пример
Код:
[Setup]
AppName=Test
AppVerName=Test
DefaultDirName={pf}\Test
DisableReadyPage=yes

[Tasks]
Name: "ANSI"; Description: "ANSI"; GroupDescription: "Какая версия установлена?"; Flags: exclusive unchecked;
Name: "Unicode"; Description: "Unicode"; GroupDescription: "Какая версия установлена?"; Flags: exclusive;
Name: "v100"; Description: "v1.00 ~ 1.02"; GroupDescription: "Версия API?"; Flags: exclusive unchecked;
Name: "v103"; Description: "v1.03 ~ v1.04"; GroupDescription: "Версия API?"; Flags: exclusive unchecked;

[Code]
function ShouldSkipPage(PageID: Integer): Boolean;
begin
  If PageID = wpSelectTasks then
    Result := MsgBox('Установить дополнительные апплеты?' #10#10 'Да - выбрать из списка и установить, Нет - перейти к установке программы', mbInformation, MB_YESNO) = IDNO;
end;
 

YURSHAT

Тех. админ
Администратор
AtotIK, Хм, откуда там wpPreparing берется? Это результат компиляции того примера, что я выложил выше?
 

YURSHAT

Тех. админ
Администратор
Ну по логике вещей этой странице не должно быть. Попробуйте инсталл из атача.
 

Вложения

AtotIK

Новичок
Всё так же.
При нажатии "Да" появляется нужная страница, при нажатии "Далее" появляется wpPreparing с таким же MsgBox'ом, при нажатии "Да" ещё раз появляется этот же MsgBox, но пропадают кнопки "Назад" и "Далее". После стартует установка.
При нажатии "Нет" пропускается страница и всё как выше.
Видео:
 

ReFLeXx

Новичок
AtotIK, а какая версия Inno? Может, попробуй обновить, вдруг баг исправлен.
 

ReFLeXx

Новичок
В атаче та же проблема, даже когда сам компилирую. Помогает совместимость ниже Window Vista. Надо бы отписать о баге.
З.Ы. Win7x32
 

YURSHAT

Тех. админ
Администратор
AtotIK, попробуйте так
Код:
[Setup]
AppName=Test
AppVerName=Test
DefaultDirName={pf}\Test
DisableReadyPage=yes

[Tasks]
Name: "ANSI"; Description: "ANSI"; GroupDescription: "Какая версия установлена?"; Flags: exclusive unchecked;
Name: "Unicode"; Description: "Unicode"; GroupDescription: "Какая версия установлена?"; Flags: exclusive;
Name: "v100"; Description: "v1.00 ~ 1.02"; GroupDescription: "Версия API?"; Flags: exclusive unchecked;
Name: "v103"; Description: "v1.03 ~ v1.04"; GroupDescription: "Версия API?"; Flags: exclusive unchecked;

[Code]
var
  RetryTasks: Boolean;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
  RetryTasks := False;
  if CurPageID = wpSelectDir then
    if MsgBox('Установить дополнительные апплеты?' #10#10 'Да - выбрать из списка и установить, Нет - перейти к установке программы', mbInformation, MB_YESNO) = IDNO then
      RetryTasks := True;
  Result := True;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if (CurPageID = wpSelectTasks) and RetryTasks then
    WizardForm.NextButton.Click;
end;
 
Сверху