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

  • Автор темы Автор темы AtotIK
  • Дата начала Дата начала

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)? Прошу Вашей помощи в решении проблемы!
 
Последнее редактирование:
Ну, если я Вас правильно понял :), то
Код:
function ShouldSkipPage(PageID: Integer): Boolean;
begin
  If PageID = wpSelectTasks then
    Result := MsgBox('Установить дополнительные апплеты?' #10#10 'Да - выбрать из списка и установить, Нет - перейти к установке программы', mbInformation, MB_YESNO) = IDNO;
end;
 
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;
 
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, теперь 2 раза на wpPreparing появляется:
d5becf4cce8c.jpg
 
AtotIK, Хм, откуда там wpPreparing берется? Это результат компиляции того примера, что я выложил выше?
 
Ну по логике вещей этой странице не должно быть. Попробуйте инсталл из атача.
 

Вложения

  • setup.rar
    setup.rar
    515.4 KB · Просмотры: 11
Всё так же.
При нажатии "Да" появляется нужная страница, при нажатии "Далее" появляется wpPreparing с таким же MsgBox'ом, при нажатии "Да" ещё раз появляется этот же MsgBox, но пропадают кнопки "Назад" и "Далее". После стартует установка.
При нажатии "Нет" пропускается страница и всё как выше.
Видео:
 
AtotIK, а какая версия Inno? Может, попробуй обновить, вдруг баг исправлен.
 
В атаче та же проблема, даже когда сам компилирую. Помогает совместимость ниже Window Vista. Надо бы отписать о баге.
З.Ы. Win7x32
 
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;
 
Назад
Сверху