Почему процедура 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;

затем я нажимаю F7 для перехода в режим Step Into и вижу, что сразу вызывается ShouldSkipPage, PageId равен 1, результатом является True, и в результате страница WelcomePage фактически пропускается. Я читал подобные сообщения об этой процедуре и о том, что она вызывалась много раз и т. д., но я все еще не понимаю. Похоже, справка неверна. Кто-нибудь точно знает, как работает эта процедура и почему она вызывается для приветственной страницы, игнорируя справочную информацию?


person JConstantine    schedule 05.03.2020    source источник
comment
@AndrewTruckle Я понимаю, что вы хотели заменить изображение текстом, но вы использовали обновленный текст вместо старого текста, который был на изображении.   -  person Martin Prikryl    schedule 06.03.2020
comment
Прости за это. Дох! Спасибо за исправление. ????   -  person Andrew Truckle    schedule 06.03.2020


Ответы (1)


Обновленная документация не содержит wpWelcome:

function ShouldSkipPage(PageID: Integer): Boolean;

Мастер вызывает эту функцию события, чтобы определить, следует ли вообще отображать конкретную страницу (указанную PageID). Если вы вернете True, страница будет пропущена; если вы вернете False, страница может быть показана.

Примечание. Эта функция события не вызывается для страниц wpPreparing и wpInstalling, а также для страниц, которые программа установки уже определила как пропущенные (например, wpSelectComponents в установке, не содержащей компонентов).


Согласно истории версий, это изменилось в 5.3.9. (2010-04-10):

Добавлена ​​новая директива раздела [Setup]: DisableWelcomePage, чтобы скрыть страницу мастера приветствия. Это рекомендуется делать в соответствии с рекомендациями мастера Aero. Кроме того, функция события ShouldSkipPage теперь также вызывается для wpWelcome.


И на самом деле текущая версия Inno Setup вообще не показывает эту страницу по умолчанию.
См. Страница приветствия не отображается, страница SelectDir вместо этого отображается первым

person Martin Prikryl    schedule 05.03.2020