Пример выбора одного компонента из нескольких, находящихся в одной группе.
В этом примере был замечен "глюк" NSIS. При нажатии группы "Компоненты", непредсказуемо отмечались секции в группе.
читать дальше »
Код:
!include "MUI2.nsh"
!include "Sections.nsh"
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Russian"
OutFile "File.exe"
SectionGroup /e "Компоненты" IDG
Section "Компонент №1" ID_1
SectionEnd
Section /o "Компонент №2" ID_2
SectionEnd
Section /o "Компонент №3" ID_3
SectionEnd
SectionGroupEnd
Function .onInit
StrCpy $1 ${ID_1}
FunctionEnd
Function .onSelChange
!insertmacro StartRadioButtons $1
!insertmacro RadioButton ${ID_1}
!insertmacro RadioButton ${ID_2}
!insertmacro RadioButton ${ID_3}
!insertmacro EndRadioButtons
FunctionEnd
Решение.
"Отключить" секционную группу и определить начальное состояние компонентов в функции .OnInit
читать дальше »
Код:
!include "MUI2.nsh"
!include "Sections.nsh"
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Russian"
OutFile "File.exe"
SectionGroup /e "Компоненты" IDG
Section "Компонент №1" ID_1
SectionEnd
Section /o "Компонент №2" ID_2
SectionEnd
Section /o "Компонент №3" ID_3
SectionEnd
SectionGroupEnd
Function .onInit
SectionSetFlags ${IDG} ${SECTION_OFF} #отключаем группу
SectionSetFlags ${ID_1} ${SF_SELECTED} #определяем, как отмеченный компонент
StrCpy $1 ${ID_1}
FunctionEnd
Function .onSelChange
!insertmacro StartRadioButtons $1
!insertmacro RadioButton ${ID_1}
!insertmacro RadioButton ${ID_2}
!insertmacro RadioButton ${ID_3}
!insertmacro EndRadioButtons
FunctionEnd