1. Уважаемые гости и пользователи форума.
    Администрация настоятельно рекомендует не регистрировать несколько аккаунтов для одного пользователя. При выявлении наличия мультиаккаунтов будут заблокированы все учетные записи данного пользователя.
    Аккаунты, зарегистрированные на временную почту будут также заблокированы.

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

Тема в разделе "Inno Setup", создана пользователем AtotIK, 16 июл 2014.

  1. Ветеран

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

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

    Сам код:
    Код (Text):
    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)? Прошу Вашей помощи в решении проблемы!
     
    Последнее редактирование: 16 июл 2014
  2. Тех. админ Администратор

    Регистрация:
    26 дек 2011
    Сообщения:
    514
    Симпатии:
    601
    Пол:
    Мужской
    Ну, если я Вас правильно понял :), то
    Код (Text):
    function ShouldSkipPage(PageID: Integer): Boolean;
    begin
      If PageID = wpSelectTasks then
        Result := MsgBox('Установить дополнительные апплеты?' #10#10 'Да - выбрать из списка и установить, Нет - перейти к установке программы', mbInformation, MB_YESNO) = IDNO;
    end;
     
  3. Ветеран

    Регистрация:
    2 май 2014
    Сообщения:
    37
    Симпатии:
    3
    Пол:
    Мужской
    YURSHAT, поняли правильно, но всё же MsgBox так же появляется ещё несколько раз. Даже тут:
    Код (Text):
    [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;
     
  4. Тех. админ Администратор

    Регистрация:
    26 дек 2011
    Сообщения:
    514
    Симпатии:
    601
    Пол:
    Мужской
    AtotIK, вы поставили задачу, согласно которой
    И соответственно постановленному условию я и дал пример
    Код (Text):
    [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;
     
    AtotIK нравится это.
  5. Ветеран

    Регистрация:
    2 май 2014
    Сообщения:
    37
    Симпатии:
    3
    Пол:
    Мужской
    YURSHAT, теперь 2 раза на wpPreparing появляется:
    [​IMG]
     
  6. Тех. админ Администратор

    Регистрация:
    26 дек 2011
    Сообщения:
    514
    Симпатии:
    601
    Пол:
    Мужской
    AtotIK, Хм, откуда там wpPreparing берется? Это результат компиляции того примера, что я выложил выше?
     
  7. Ветеран

    Регистрация:
    2 май 2014
    Сообщения:
    37
    Симпатии:
    3
    Пол:
    Мужской
    YURSHAT, да, именно он.
     
  8. Тех. админ Администратор

    Регистрация:
    26 дек 2011
    Сообщения:
    514
    Симпатии:
    601
    Пол:
    Мужской
    Ну по логике вещей этой странице не должно быть. Попробуйте инсталл из атача.
     

    Вложения:

    • setup.rar
      Размер файла:
      515,4 КБ
      Просмотров:
      9
  9. Ветеран

    Регистрация:
    2 май 2014
    Сообщения:
    37
    Симпатии:
    3
    Пол:
    Мужской
    Всё так же.
    При нажатии "Да" появляется нужная страница, при нажатии "Далее" появляется wpPreparing с таким же MsgBox'ом, при нажатии "Да" ещё раз появляется этот же MsgBox, но пропадают кнопки "Назад" и "Далее". После стартует установка.
    При нажатии "Нет" пропускается страница и всё как выше.
    Видео:
     
  10. Тех. админ Администратор

    Регистрация:
    26 дек 2011
    Сообщения:
    514
    Симпатии:
    601
    Пол:
    Мужской
    Хм, тогда причина точно в Win. Под XP у меня нормально все работает и я не могу повторить то, что у Вас происходит.
    Тут уж пусть владельцы восьмерки посмотрят
     
  11. Ветеран

    Регистрация:
    2 май 2014
    Сообщения:
    37
    Симпатии:
    3
    Пол:
    Мужской
    YURSHAT, и то верно, в режиме совместимости всё нормально.
     
  12. Ветеран

    Регистрация:
    19 июн 2011
    Сообщения:
    76
    Симпатии:
    48
    AtotIK, а какая версия Inno? Может, попробуй обновить, вдруг баг исправлен.
     
  13. Ветеран

    Регистрация:
    2 май 2014
    Сообщения:
    37
    Симпатии:
    3
    Пол:
    Мужской
    ReFLeXx, на 5.5.5 тоже самое.
     
  14. Ветеран Модератор

    Регистрация:
    15 июн 2011
    Сообщения:
    647
    Симпатии:
    253
    Хмммм прикольно, беру сетапник из атача наблюдается такая бяка, сам скомпилировал - нет. Win7x64
     
  15. Ветеран

    Регистрация:
    19 июн 2011
    Сообщения:
    76
    Симпатии:
    48
    В атаче та же проблема, даже когда сам компилирую. Помогает совместимость ниже Window Vista. Надо бы отписать о баге.
    З.Ы. Win7x32
     
  16. Тех. админ Администратор

    Регистрация:
    26 дек 2011
    Сообщения:
    514
    Симпатии:
    601
    Пол:
    Мужской
    AtotIK, попробуйте так
    Код (Text):
    [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;
     
    AtotIK нравится это.
  17. Ветеран

    Регистрация:
    2 май 2014
    Сообщения:
    37
    Симпатии:
    3
    Пол:
    Мужской
    YURSHAT, работает! :dance:
     

Поделиться этой страницей