Nsis 单击“添加”按钮时跳过页面

Nsis 单击“添加”按钮时跳过页面,nsis,Nsis,我从另一个添加了此按钮: 我将其放在自定义页面函数中,并将其放置为如下显示: 除了我希望这个按钮可以跳转到下一个自定义页面之外,一切都很正常。 我尝试获取窗口并向其发送下一个命令,尝试调用自定义页面函数,甚至尝试从中调用全局标签,并且尝试从它到达的几乎每一行代码中调用Abort。 我仍然错过了一些东西,谷歌的搜索结果全是紫色的。我需要一种基于单击跳转到下一页的方法,并且此按钮必须位于后退按钮之外。来自文档: pre功能允许您使用Abort跳过页面 !包括nsDialogs.nsh !包括Win

我从另一个添加了此按钮:

我将其放在自定义页面函数中,并将其放置为如下显示:

除了我希望这个按钮可以跳转到下一个自定义页面之外,一切都很正常。
我尝试获取窗口并向其发送下一个命令,尝试调用自定义页面函数,甚至尝试从中调用全局标签,并且尝试从它到达的几乎每一行代码中调用
Abort


我仍然错过了一些东西,谷歌的搜索结果全是紫色的。我需要一种基于单击跳转到下一页的方法,并且此按钮必须位于
后退
按钮之外。

来自文档:

pre功能允许您使用Abort跳过页面

!包括nsDialogs.nsh
!包括WinMessages.nsh
!包括LogicLib.nsh
页面自定义页面1
页面自定义第2页
页面目录
页面文件
Var SkipPage2
函数onmybtnick
StrCpy$SkipPage2 1;设置标志,以便下一页知道跳过自身
SendMessage$HWNDPARENT${WM_COMMAND}1 0;单击下一步按钮
功能端
功能页1
StrCpy$skippage20;重置
nsDialogs::创建1018
流行音乐$0
${NSD_CreateButton}0 30u 100%10u“&跳过下一页”
流行音乐$0
${NSD_OnClick}$0 onmybtclick
nsDialogs::Show
功能端
功能页2
${If}$SkipPage2 0
中止
${EndIf}
nsDialogs::创建1018
流行音乐$0
${NSD_CreateLabel}0 100%12u“我没有被跳过”
流行音乐$0
nsDialogs::Show
功能端
GetDlgItem $0 $hwndparent 2 ; Find cancel button
System::Call *(i,i,i,i)i.r1
System::Call 'USER32::GetWindowRect(ir0,ir1)'
System::Call *$1(i.r2,i.r3,i.r4,i.r5)
IntOp $5 $5 - $3 ;height
IntOp $4 $4 - $2 ;width
System::Call 'USER32::ScreenToClient(i$hwndparent,ir1)'
System::Call *$1(i.r2,i.r3)
System::Free $1
IntOp $2 $2 + $4 ;x
IntOp $2 $2 + 8  ;x+padding
System::Call 'USER32::CreateWindowEx(i0,t "Button",t "Skip",i${WS_CHILD}|${WS_VISIBLE}|${WS_TABSTOP},i 170,i 327,ir4,ir5,i $hwndparent,i 0x666,i0,i0)i.r0'
SendMessage $hwndparent ${WM_GETFONT} 0 0 $1
SendMessage $0 ${WM_SETFONT} $1 1

GetFunctionAddress $0 onmybtnclick
ButtonEvent::AddEventHandler 0x666 $0
!include nsDialogs.nsh
!include WinMessages.nsh
!include LogicLib.nsh

Page Custom Page1
Page Custom Page2
Page Directory
Page InstFiles

Var SkipPage2

Function onmybtnclick
StrCpy $SkipPage2 1 ; Set flag so the next page knows to skip itself 
SendMessage $HWNDPARENT ${WM_COMMAND} 1 0 ; Click next button
FunctionEnd

Function Page1
    StrCpy $SkipPage2 0 ; Reset
    nsDialogs::Create 1018
    Pop $0

    ${NSD_CreateButton} 0 30u 100% 10u "&Skip next page"
    Pop $0
    ${NSD_OnClick} $0 onmybtnclick
    nsDialogs::Show
FunctionEnd

Function Page2
${If} $SkipPage2 <> 0
    Abort
${EndIf}
nsDialogs::Create 1018
Pop $0
${NSD_CreateLabel} 0 0 100% 12u "I was not skipped"
Pop $0
nsDialogs::Show
FunctionEnd