Archive: Optional Radio Buttons


Optional Radio Buttons
Hi all,

I'm relatively new to NSIS, so excuse my noobness.

I'm using NSIS 2.46 with MUI2. I am trying to create a components page where the component group is optional, but the items in the group are radio buttons.

The context is that I install some prerequisites for my installation. The user can choose 2 options on how those prerequisites are installed, but they can also choose not to install the prerequisites at all.

Currently my code looks something like:


!insertmacro MUI_PAGE_COMPONENTS
...

SectionGroup "Prerequisite Installation"
Section "Install Type 1" installType1
SectionEnd
Section "Install Type 2" installType2
SectionEnd
SectionGroupEnd

...
Function .onInit
StrCpy $1 ${installType1}
FunctionEnd

Function .onSelChange
!insertmacro StartRadioButtons $1
!insertmacro RadioButton "${installType1}"
!insertmacro RadioButton "${installType2}"
!insertmacro EndRadioButtons
FunctionEnd



Code examples taken from http://stackoverflow.com/questions/1...ams-to-install.

This does give me the "radio button" effect for install types, but I cant deselect the group checkbox (which ok, is "correct" radio button operation. I'm seeing if theres a way to have nothing selected or only 1 selected)

Thanks!!

good question, i have the same problem. I use it the same way you do, like this http://nsis.sourceforge.net/Examples/one-section.nsi

Always 1 checkbox is activated. You cant deactivate both.

Is it possible to uncheck both options with this "Sections.nsh" method?

!include "Sections.nsh"
;--------------------------------
Name "One Section"
OutFile "one-section.exe"
RequestExecutionLevel user
;--------------------------------
; Pages
Page components
;--------------------------------
; Sections

Section !Required
SectionIn RO
SectionEnd

Section "Group 1 - Option 1" g1o1
SectionEnd

Section /o "Group 1 - Option 2" g1o2
SectionEnd

;-------------------------------
; Functions
; $1 stores the status of group 1

Function .onInit
StrCpy $1 ${g1o1} ; Group 1 - Option 1 is selected by default
FunctionEnd

Function .onSelChange
!insertmacro StartRadioButtons $1
!insertmacro RadioButton ${g1o1}
!insertmacro RadioButton ${g1o2}
!insertmacro EndRadioButtons
FunctionEnd

You can write your own code in .onSelChange to check the selected states of sections and uncheck the others as necessary. You can use ${If} ${SectionIsSelected} and the UnselectSection macro in Sections.nsh to simplify things.

Stu