Страница Пользовательский 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

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

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

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

0
Ankesh kumar Jaisansaria 11 Апр 2019 в 18:51

2 ответа

Лучший ответ

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

Функция выхода позволяет вам заставить пользователя оставаться на текущей странице, используя 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
1
Anders 11 Апр 2019 в 18:01
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
        abort

        false:
        System::Call 'USER32::PostMessage(i$HWNDPARENT,i0x408,i-1,i0)'
        #Abort
FunctionEnd
0
Butiri Dan 16 Авг 2019 в 13:08