NSIS Custom PageBB Перейти к следующей странице - PullRequest
0 голосов
/ 11 апреля 2019

Страница Custom ModePageCreate ModePageLeave

Function ModePageLeave
    MessageBox MB_YESNO "Installer is now going to uninstall existing software and reinstall software. Database files will be removed. Please confirm to proceed!" IDYES true IDNO false
        true:
        call silentUninst

        false:
        System::Call 'USER32::PostMessage(i$HWNDPARENT,i0x408,i-1,i0)'
        #Abort
FunctionEnd

У меня есть настраиваемая страница, и в этом я хочу показать окно сообщения, когда пользователь нажимает следующий (следующий от пользовательской страницы)

Теперь при нажатииСледующее окно сообщения появляется и получает подтверждение от пользователя.Затем, если пользователь нажимает «Да», он должен перейти на следующую страницу, а если «Нет», то он должен оставаться на той же пользовательской странице.

С помощью этого кода я получаю одну и ту же пользовательскую страницу независимо от нажатия кнопки «Да» или «Нет». Каждый раз, когда я придерживаюсь только пользовательской страницы.

1 Ответ

1 голос
/ 11 апреля 2019

Из документации:

Функция отпуска позволяет вам заставить пользователя оставаться на текущей странице, используя Abort.

Ваш код всегда выполняет часть false:.

Вы можете изменить его на

Function ModePageLeave
    MessageBox MB_YESNO "Something?" IDYES true IDNO false
        true:
        call silentUninst
        goto done

        false:
        System::Call 'USER32::PostMessage(i$HWNDPARENT,i0x408,i-1,i0)'
        done:
FunctionEnd

но лучше использовать официальный метод:

Page Components
Page Custom myPageCreate myPageLeave
Page Directory
Page Instfiles

Function myPageCreate
nsDialogs::Create 1018
Pop $0
nsDialogs::Show
FunctionEnd

Function myPageLeave
MessageBox MB_YESNO "Something?" IDYES goNext
  Abort ; Stay on page
goNext:
FunctionEnd
...