NSIS-Как я могу динамически отображать определенную пользовательскую страницу?

Моя 1-я страница содержит 2 переключателя: 1 для установки и другой для обновления. В зависимости от выбора пользователя я должен показывать настраиваемые страницы для установки или обновления. Как я могу это сделать?


person Pia    schedule 28.12.2009    source источник
comment
Просто добавил еще один подход, не используя функцию RelGotoPage.   -  person VonC    schedule 28.12.2009


Ответы (2)


Если вы вызовете abort в обратном вызове функции создания для вашей пользовательской страницы, страница будет пропущена:

Function MyPage
${If} $somevar == "something"
Abort
${EndIf}
;Show page with nsDialogs or InstallOptions here...
FunctionEnd

page custom MyPage
person Anders    schedule 28.12.2009

Я не проверял это напрямую (скоро буду, так как моему onw-скрипту NSIS понадобится эта функция), но, возможно, функцию RelGotoPage может делать то, что вам нужно.

Эта функция заставляет NSIS переходить на указанную страницу относительно текущей страницы.
Используйте ее только на:

  • нормальные функции,
  • функция обратного вызова ".onUserAbort" (без MUI) или
  • !define MUI_CUSTOMFUNCTION_ABORT "Функция" (с MUI)

Эта функция также позволяет InstallOptions и InstallOptionsEx использовать свои функции, поэтому вы можете выбрать, какие элементы управления заменят кнопки NSIS по умолчанию.


Примечание. в этой теме предлагается другой подход:

Вы должны попытаться воздержаться от использования RelGotoPage, потому что, когда пользователь нажимает кнопку "Назад", ему по-прежнему будет показана страница.
Вместо этого вам следует вызывать Abort в предварительных функциях страницы и функциях show пользовательской страницы, если задано определенное условие. чтобы пропустить их.

Таким образом, установив соответствующую переменную в зависимости от ваших кнопок, вы можете пропустить страницы, которые вы не хотите показывать, и остановиться на соответствующей странице.

См. раздел обратного вызова руководства NSIS:

Каждая встроенная страница имеет три функции обратного вызова: предварительная функция, функция создания шоу и функция выхода.

  • Предварительная функция вызывается непосредственно перед созданием страницы,
  • show-функция вызывается сразу после ее создания и до ее отображения и
  • функция выхода вызывается сразу после нажатия пользователем следующей кнопки и до того, как страница будет покинута.

А также:

  • Предварительная функция позволяет пропустить страницу с помощью Abort.
  • Функция show позволяет настроить пользовательский интерфейс страницы с помощью CreateFont, SetCtlColors, SendMessage и других.
  • Функция выхода позволяет заставить пользователя остаться на текущей странице с помощью Abort.
person VonC    schedule 28.12.2009