I have a Section
that is set to RO
and occurs in all InstType
s except for a special one.
When the user first selects the special InstType
and then selects "Custom" as the InstType
the section is unchecked and can't be checked again in the "Custom" InstType
.
So everything is fine except that when the users selects the "Custom" InstType
the Section
should always be checked again.
Only in the special InstType
use case it should be unchecked.
How can I achieve this?
You can enforce whatever logic you want in .onSelChange:
!include WinMessages.nsh
!include LogicLib.nsh
!include Sections.nsh
Page Components
Page InstFiles
InstType "Normal1"
!define CIT_Special 1
InstType "Special"
InstType "Normal2"
Section Foo
SectionIn 1 2 3
SectionEnd
Section Bar SEC_Special
SectionIn 1 3
SectionIn RO
SectionEnd
Section Baz
SectionIn 1 2 ;3 << Not the same as Foo just to have some sort of difference
SectionEnd
Function .onSelChange
;Normally you would call GetCurInstType here, but it seems we need a little hack to detect the custom section
FindWindow $1 "#32770" "" $HWNDPARENT
GetDlgItem $1 $1 0x3F9
SendMessage $1 ${CB_GETCURSEL} 0 0 $2
SendMessage $1 ${CB_GETITEMDATA} $2 0 $2
${If} $2 = ${CIT_Special}
!insertmacro UnselectSection ${SEC_Special}
${Else}
!insertmacro SelectSection ${SEC_Special}
${EndIf}
FunctionEnd