Mutually Exclusive Options problem.
Almost done with my Installer, but have been stuck on one problem which I've been unable to solve.
I have 3 option groups with 2 mutually exclusive options each. Now this is where it gets confusing.
If the Top option in each group is selected (Sec2, Sec4, Sec6) by the user, then the user can change between options in any other of the 3 groups by single clicking between each selection, as one would expect. However, if the bottom option in any group is selected (Sec1, Sec3, Sec5) then the user has to unselect the selected option before selecting another, as it locks and wont allow it to change. So it works one way, but not the other.
onSelChange
Push$0
>;OptionGroup1
StrCmp $R9${Sec1} check_Sec1
SectionGetFlags${Sec1} $0
IntOp$0 $0 & ${SF_SELECTED}
IntCmp $0 ${SF_SELECTED} 0 OptionGroup1Done OptionGroup1Done
StrCpy $R9${Sec1}
SectionGetFlags ${Sec2} $0
IntOp$0 $0 & ${SECTION_OFF}
SectionSetFlags ${Sec2} $0
Goto OptionGroup1Done
check_Sec1:
SectionGetFlags ${Sec2} $0
IntOp$0 $0 & ${SF_SELECTED}
IntCmp $0 ${SF_SELECTED} 0 OptionGroup1Done OptionGroup1Done
StrCpy $R9${Sec2}
SectionGetFlags ${Sec1} $0
IntOp$0 $0 & ${SECTION_OFF}
SectionSetFlags ${Sec1} $0
OptionGroup1Done:
;OptionGroup2
StrCmp $R9${Sec3} check_Sec3
SectionGetFlags${Sec3} $0
IntOp$0 $0 & ${SF_SELECTED}
IntCmp $0 ${SF_SELECTED} 0 OptionGroup2Done OptionGroup2Done
StrCpy $R9${Sec3}
SectionGetFlags ${Sec4} $0
IntOp$0 $0 & ${SECTION_OFF}
SectionSetFlags ${Sec4} $0
Goto OptionGroup2Done
check_Sec3:
SectionGetFlags ${Sec4} $0
IntOp$0 $0 & ${SF_SELECTED}
IntCmp $0 ${SF_SELECTED} 0 OptionGroup2Done OptionGroup2Done
StrCpy $R9${Sec4}
SectionGetFlags ${Sec3} $0
IntOp$0 $0 & ${SECTION_OFF}
SectionSetFlags ${Sec3} $0
OptionGroup2Done:
;OptionGroup3
StrCmp $R9${Sec5} check_Sec5
SectionGetFlags${Sec5} $0
IntOp$0 $0 & ${SF_SELECTED}
IntCmp $0 ${SF_SELECTED} 0 OptionGroup3Done OptionGroup3Done
StrCpy $R9${Sec5}
SectionGetFlags ${Sec6} $0
IntOp$0 $0 & ${SECTION_OFF}
SectionSetFlags ${Sec6} $0
Goto OptionGroup3Done
check_Sec5:
SectionGetFlags ${Sec6} $0
IntOp$0 $0 & ${SF_SELECTED}
IntCmp $0 ${SF_SELECTED} 0 OptionGroup3Done OptionGroup3Done
StrCpy $R9${Sec6}
SectionGetFlags ${Sec5} $0
IntOp$0 $0 & ${SECTION_OFF}
SectionSetFlags ${Sec5} $0
OptionGroup3Done:
Pop $0
FunctionEnd
>