NSIS自定义页面MessageBox跳至下一页

时间:2019-04-11 15:51:17

标签: nsis

页面自定义模式页面创建模式页面离开

Selecting rows after ID 1

Wanted result:
ID | Type
---------
2  | 2
3  | 2
4  | 2

Selecting rows after ID 5

Wanted result:
ID | Type
---------
6  | 2
7  | 2

我有一个自定义页面,在该页面中,我想在用户单击下一步时显示一个消息框(下一个自定义页面)

现在单击下一个消息框将出现,并接受用户确认。然后,如果用户单击“是”,则应转到下一页;如果“否”,则应保留在同一自定义页面上。

使用此代码,无论单击“是”还是“否”,我都会得到相同的自定义页面。每次我仅坚持自定义页面时。

2 个答案:

答案 0 :(得分:1)

从文档中:

  

请假功能允许您使用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 :(得分:0)

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