Моя 1-я страница содержит 2 переключателя: 1 для установки и другой для обновления. В зависимости от выбора пользователя я должен показывать настраиваемые страницы для установки или обновления. Как я могу это сделать?
NSIS-Как я могу динамически отображать определенную пользовательскую страницу?
Ответы (2)
Если вы вызовете abort
в обратном вызове функции создания для вашей пользовательской страницы, страница будет пропущена:
Function MyPage
${If} $somevar == "something"
Abort
${EndIf}
;Show page with nsDialogs or InstallOptions here...
FunctionEnd
page custom MyPage
Я не проверял это напрямую (скоро буду, так как моему 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.
RelGotoPage
. - person VonC   schedule 28.12.2009