Как на самом деле работает процедура ShouldSkipPage в Inno Setup?

Вот мой код:

[Setup]
    AppName=My Program
    AppVersion=1.5
    DefaultDirName={pf}\My Program
    DefaultGroupName=My Program
    UninstallDisplayIcon={app}\MyProg.exe
    Compression=lzma2
    SolidCompression=yes
    OutputDir=userdocs:Inno Setup Examples Output

    [Files]
    Source: "MyProg.exe"; DestDir: "{app}"
    Source: "MyProg.chm"; DestDir: "{app}"
    Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme

    [Icons]
    Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"

    [code]
    function ShouldSkipPage(PageID: Integer): Boolean;
    begin
     if PageID = 1 then 
       Result := True;
    end;

Когда я запускаю свою программу в режиме «Шаг в», я получаю следующую последовательность результатов ShouldSkipPage: True, False, True, False. Только после этого появляется SelectDirPage. (PageID = 1 для приветственной страницы). Кто-нибудь может объяснить, как на самом деле работает процедура ShouldSkipPage и почему она так называется? Вот список страниц мастера:

Страницы мастера

Перед тем, как SelectDirPage действительно отобразится, процедура ShouldSkipPage запускается 4 раза и возвращает «True», «False», «True», «False» соответственно, и это именно то, что я здесь не понимаю.


person JConstantine    schedule 06.03.2020    source источник
comment
На самом деле об этом уже спрашивали: ShouldSkipPage вызывается дважды на страницу.   -  person Martin Prikryl    schedule 06.03.2020
comment
Я знаю это. Я читал этот пост, но все равно не понял. Когда я запускаю свою программу, результат True для страницы приветствия. Тогда это False, как если бы была кнопка «Далее». Затем снова True, как если бы он проверял, есть ли страница, на которую можно вернуться. И, наконец, False для SelecDirPage. Но на странице приветствия нет кнопок «Далее» и «Назад». Так зачем проверять?   -  person JConstantine    schedule 06.03.2020
comment
Добавьте последовательность к своему вопросу и перечислите страницы. Комментарии типа Тогда это неверно, как если бы была кнопка «Далее», довольно расплывчаты. Это ничего не говорит нам о странице, на которую вы ссылаетесь.   -  person Martin Prikryl    schedule 06.03.2020
comment
возвращает True, False, True, False — Опять же, для каких страниц?   -  person Martin Prikryl    schedule 06.03.2020
comment
У меня он запускается только два раза, с PageID = wpSelectDir. И на самом деле это не имеет значения. Его можно запускать столько раз, сколько Inno Setup считает нужным. Есть ли какая-то реальная проблема, которую вы решаете здесь?   -  person Martin Prikryl    schedule 06.03.2020
comment
1. True -> PageID = 1 (WelcomePage) 2. False -> PageID = 6 (SelectDirPage) 3. True -> PageID = 1 (WelcomePage) 4. False -> PageID = 6 (SelectDirPage) Так что у меня работает 4 раз. Я не понимаю, почему.   -  person JConstantine    schedule 06.03.2020
comment
Вы используете последнюю версию Inno Setup? ShouldSkipPage не вызывается для wpWelcome, если у вас нет DisableWelcomePage=no.   -  person Martin Prikryl    schedule 06.03.2020
comment
Я использую компилятор Inno Setup 5.4.2.   -  person JConstantine    schedule 06.03.2020
comment
И в любом случае, вы получаете два звонка на страницу, как говорится в другом вопросе. + Вы должны обновить.   -  person Martin Prikryl    schedule 06.03.2020
comment
Я бы обновился, но тогда я не смогу использовать свою InnoIDE, которая больше не поддерживается, и мне придется купить Install Designer для разработки моих форм в графическом интерфейсе. Я не могу найти аналогичное бесплатное программное обеспечение для этого.   -  person JConstantine    schedule 06.03.2020
comment
Существует эта старая часть программного обеспечения Inno Setup Form Designer, но я не проверено, работает ли он с самой последней версией Inno Setup.   -  person CherryDT    schedule 09.03.2020
comment
@CherryDT, похоже, нет :( Знаете ли вы какие-нибудь бесплатные программы с аналогичными функциями?   -  person JConstantine    schedule 10.03.2020