Цитата asetin_9207:
Так ведь страница выбора секции и страница ввода ника - разные страницы. Как они будт отражены? Я не понимаю »
|
Секции "Stryder emulator(для Garena)" и "Revolution Crew emulator(рекомендуемый) скрываем.
из справки:
Код:
Section "-hidden section"
SectionEnd
Вот пример:
читать дальше »
Код:
!include "MUI.nsh"
!include "nsDialogs.nsh"
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_DIRECTORY
Page custom fnCustomInit fnCustomDestroy ;функция будет выполняться во время открытия стр. MUI_PAGE_COMPONENTS
!define MUI_PAGE_CUSTOMFUNCTION_Show Page
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Russian"
OutFile "test.exe"
InstallDir "$PROGRAMFILES\Left 4 Dead 2\"
ShowInstDetails show
Var Dialog
Var Label
Var Text
Var CheckBox
Var CheckBox1
Function fnCustomInit
nsDialogs::Create 1018
Pop $Dialog
!insertmacro MUI_HEADER_TEXT "Выбор ника" " Ввод своего ника"
${NSD_CreateLabel} 0 5u 100u 10u "Введите свой ник"
Pop $Label
${NSD_CreateText} 0 20u 100% 15u "Сюда ввожу ник"
Pop $Text
${NSD_CreateCheckBox} 0 50u 235 10u "Revolution Crew emulator(рекомендуемый)"
Pop $CheckBox
${NSD_OnClick} $CheckBox Check
${NSD_SetState} $CheckBox 1
${NSD_CreateCheckBox} 0 70u 170 10u "Stryder emulator(для Garena)"
Pop $CheckBox1
${NSD_OnClick} $CheckBox1 Check1
${NSD_SetState} $CheckBox1 0
nsDialogs::Show
FunctionEnd
Function Check
Pop $CheckBox
${NSD_GetState} $CheckBox $1
${If} $1 == 1
${NSD_SetState} $CheckBox1 0
${Else}
${NSD_SetState} $CheckBox1 1
${EndIf}
FunctionEnd
Function Check1
Pop $CheckBox1
${NSD_GetState} $CheckBox1 $1
${If} $1 == 1
${NSD_SetState} $CheckBox 0
${Else}
${NSD_SetState} $CheckBox 1
${EndIf}
FunctionEnd
Function fnCustomDestroy
${NSD_GetText} $Text $Text
${NSD_GetState} $CheckBox $CheckBox
${NSD_GetState} $CheckBox1 $CheckBox1
FunctionEnd
Function Page
StrCmp $Text "Сюда ввожу ник" 0 +3
MessageBox MB_ICONEXCLAMATION "Введите ник!"
Call GotoPage
StrCmp $Text "" 0 +3
MessageBox MB_ICONEXCLAMATION "Введите ник!"
Call GotoPage
FunctionEnd
Function GotoPage ; Функция для произвольного перехода по страницам
StrCpy $R9 -1
IntCmp $R9 0 0 Move Move
StrCmp $R9 "-1" 0 Move ;-1 переход на предыдущую страницу
StrCpy $R9 "120"
Move:
SendMessage $HWNDPARENT "0x408" "$R9" ""
FunctionEnd
Section "-Revolution Crew emulator(рекомендуемый)" ;скрываем секцию
StrCmp $CheckBox 1 0 Next
MessageBox MB_ICONINFORMATION|MB_OK "Revolution: отмечено"
SetOutPath "$INSTDIR"
;File /r E:\stryder\*.*
WriteIniStr "$INSTDIR\rev.ini" steamclient PlayerName $Text
Next:
SectionEnd
Section "Секция"
SectionEnd
Section "-Stryder emulator(для Garena)" ;скрываем секцию
StrCmp $CheckBox1 1 0 Next
MessageBox MB_ICONINFORMATION|MB_OK "Stryder: отмечено"
SetOutPath "$INSTDIR"
;File /r E:\revcrew\*.*
WriteIniStr "$INSTDIR\stryder.ini" steamclient PlayerName $Text
Next:
SectionEnd
Зависимость выбора сделал через
CheckBox, хотя для этого есть
RadioButton
Реализована корректность ввода ника.