Вызов PRE функций MUI в установщике NSIS, пропуск страниц / диалогов в установщике NSIS - PullRequest
1 голос
/ 29 апреля 2011

Может ли функция PRE диалогового окна MUI вызываться только при необходимости?

!define MUI_PAGE_CUSTOMFUNCTION_PRE SkipComponentsPage
!insertmacro MUI_PAGE_COMPONENTS

Function SkipComponentsPage
 Abort
MessageBox MB_OK "You chose to UPDATE your current version"
FunctionEnd

// Этот раздел будет проверен по умолчанию, то есть пользователь не сможет выбрать или отменить выбор этого раздела, его необходимо выполнить .......... как это сделать? Скрыть это, я включил - знак в его названии. его имя "обязательно"

Section "-mandatory" SEC_UPDATE
    #Do update............
SectionEnd

На моей настраиваемой диалоговой странице в установщике NSIS есть две кнопки RadioButton (демонстрация и обновление). Я хочу, чтобы, когда пользователь выбирает установить UPDATE (выбирает кнопку UPDATE RadioButton), страница компонентов пропускается, а указанный раздел автоматически проверяется и выполняется.

Но если пользователь решает установить DEM (выбирает DEMO RadioButton), страница «Компоненты» не пропускается, и пользователь может отмечать или снимать флажки с разделов на этой странице компонентов.

1 Ответ

1 голос
/ 29 апреля 2011

Обратный вызов страницы всегда вызывается, но вы можете поместить логику в функцию:

...
section "" SEC_UPDATE 
sectionend

Function SkipComponentsPage
!insertmacro UnSelectSection ${SEC_UPDATE} ; Don't include update with demo by default?
${If} $InstallType == UPDATE
    !insertmacro SelectSection ${SEC_UPDATE}
    Abort
${EndIf}
Functionend

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

section "Update" SEC_UPDATE 
SectionIn RO
sectionend

(И удалить вызов UnSelectSection из предварительной функции)

... или просто сделайте раздел невидимым с префиксом -name, как вы предложили.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...