Installation 组件页面离开功能:始终表示已选中组件

Installation 组件页面离开功能:始终表示已选中组件,installation,nsis,Installation,Nsis,在我的MUI组件页面上,当用户试图离开该页面时,我调用一个函数。在该函数中,我尝试查看是否至少检查了1个组件。如果没有,则显示MessageBox并中止(停止继续下一页) 我的问题:我的函数总是说即使组件未被检查,也会进行检查。我做错了什么 出于某种原因,程序总是认为第一个组件已选中,而不是 !include nsdialogs.nsh !include MUI2.nsh !define MUI_PAGE_CUSTOMFUNCTION_SHOW compshow !define MUI_PA

在我的MUI组件页面上,当用户试图离开该页面时,我调用一个函数。在该函数中,我尝试查看是否至少检查了1个组件。如果没有,则显示MessageBox并中止(停止继续下一页)

我的问题:我的函数总是说即使组件未被检查,也会进行检查。我做错了什么

出于某种原因,程序总是认为第一个组件已选中,而不是

!include nsdialogs.nsh
!include MUI2.nsh

!define MUI_PAGE_CUSTOMFUNCTION_SHOW  compshow
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE compleave

!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_LANGUAGE "English"

OutFile "test.exe"

Function compshow

FunctionEnd

Function compleave

    !insertmacro SectionFlagIsSet ${section1} ${SF_SELECTED} +1 +2
    MessageBox MB_OK "Component Selected"
    MessageBox MB_OK "Component NOT Selected"

FunctionEnd


Section "Dummy1"

SectionEnd

Section "Dummy2"

SectionEnd

你的问题是相对跳跃。您应该使用一些标签,因为宏可能包含许多命令,而不仅仅是一个命令

另外,请认为执行将在第一次跳转后继续。别忘了跳过测试的另一个分支

修改后的
completave
回调按预期工作:

函数完成
!insertmacro SectionFlagIsSet${section1}${SF_SELECTED}SELECTED未_SELECTED
挑选出来的:
MessageBox MB_OK“已选择组件”
转到终点
未选择:
MessageBox MB_OK“未选择组件”
完:
功能端