Я, видимо, дуб.
Почему у меня "компонент №3" может отмечаться одновременно с первым или вторым?
И как при всем этом сделать так, чтобы при нажатии на группу "компоненты 1" галочка, либо снималась совсем, либо происходил последовательный перебор между 1, 2 и 3 компонентой?
Код:

!include "MUI2.nsh"
!include "Sections.nsh"
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Russian"
InstType "все"
InstType "не все"
OutFile "File.exe"
Section "Компонент 0" ID_0
SectionIn 1 2
SectionEnd
SectionGroup /e "Компоненты 1" IDG1
Section /o "Компонент 1" ID_1
SectionIn 2
SectionEnd
Section "Компонент 2" ID_2
SectionIn 1
SectionEnd
Section /o "Компонент 3" ID_3
SectionEnd
SectionGroupEnd
SectionGroup /e "Компоненты 2" IDG2
Section "Компонент 4" ID_4
SectionIn 1
SectionEnd
Section "Компонент 5" ID_5
SectionIn 1
SectionEnd
SectionGroupEnd
Function .onInit
Push $0
StrCpy $R0 ${ID_2}
SectionGetFlags ${ID_1} $0
IntOp $0 $0 & ${SECTION_OFF}
SectionSetFlags ${ID_1} $0
SectionGetFlags ${ID_2} $0
IntOp $0 $0 | ${SF_SELECTED}
SectionSetFlags ${ID_2} $0
SectionGetFlags ${ID_3} $0
IntOp $0 $0 & ${SECTION_OFF}
SectionSetFlags ${ID_3} $0
Pop $0
FunctionEnd
Function .onSelChange
Push $0
StrCmp $R0 ${ID_1} Check_ID_1
SectionGetFlags ${ID_1} $0
IntOp $0 $0 & ${SF_SELECTED}
IntCmp $0 ${SF_SELECTED} 0 Done Done
StrCpy $R0 ${ID_1}
SectionGetFlags ${ID_2} $0
IntOp $0 $0 & ${SECTION_OFF}
SectionSetFlags ${ID_2} $0
SectionGetFlags ${ID_3} $0
IntOp $0 $0 & ${SECTION_OFF}
SectionSetFlags ${ID_3} $0
Goto Done
Check_ID_1:
StrCmp $R0 ${ID_2} Check_ID_2
SectionGetFlags ${ID_2} $0
IntOp $0 $0 & ${SF_SELECTED}
IntCmp $0 ${SF_SELECTED} 0 Done Done
StrCpy $R0 ${ID_2}
SectionGetFlags ${ID_1} $0
IntOp $0 $0 & ${SECTION_OFF}
SectionSetFlags ${ID_1} $0
SectionGetFlags ${ID_3} $0
IntOp $0 $0 & ${SECTION_OFF}
SectionSetFlags ${ID_3} $0
Check_ID_2:
SectionGetFlags ${ID_3} $0
IntOp $0 $0 & ${SF_SELECTED}
IntCmp $0 ${SF_SELECTED} 0 Done Done
StrCpy $R0 ${ID_3}
SectionGetFlags ${ID_1} $0
IntOp $0 $0 & ${SECTION_OFF}
SectionSetFlags ${ID_1} $0
SectionGetFlags ${ID_2} $0
IntOp $0 $0 & ${SECTION_OFF}
SectionSetFlags ${ID_2} $0
Done:
Pop $0
FunctionEnd