Ветеран
Сообщения: 1216
Благодарности: 486
|
Профиль
|
Отправить PM
| Цитировать
Цитата sawe:
Так же, хотелось бы увидеть имитацию страницы директории в nsDialog с нормальной кнопкой Обзор... »
|
Все есть и примеры в папке NSIS\Examples\nsDialogs и читать тут обязательно NSIS\Docs\nsDialogs\Readme.html
В общем пример для всех.
тыц
Код:
!include "MUI2.nsh"
!include "FileFunc.nsh"
!insertmacro MUI_PAGE_WELCOME
Page custom fnCustomShow fnCustomLeave
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Russian"
OutFile "nsdSetup.exe"
ShowInstDetails show
InstallDir "$PROGRAMFILES"
Var Text
Var Dialog
Var Radio1
Var Radio2
Var Check1
Var Check2
Var CheckBox1
Var CheckBox2
Var RadioButton1
Var RadioButton2
Var BrowseButton
Function fnCustomShow
!insertmacro MUI_HEADER_TEXT "O-па!" \
"Вот оно чё Михалыч!"
nsDialogs::Create 1018
Pop $Dialog
/******************************************************************************/
${NSD_CreateCheckBox} 0u 0u 100u 10u "Ярлык на рабочий стол"
Pop $CheckBox1
${NSD_OnClick} $CheckBox1 CheckBox1 ;обработка события на клик
${If} $Check1 == 1
${NSD_SetState} $CheckBox1 1
${ElseIf} $Check1 == 0
${NSD_SetState} $CheckBox1 0
${Else}
${NSD_SetState} $CheckBox1 1
${EndIf}
/******************************************************************************/
${NSD_CreateCheckBox} 0u 15u 140u 10u "Ярлык на панель быстрого запуска"
Pop $CheckBox2
${NSD_OnClick} $CheckBox2 CheckBox2
${If} $Check2 == 1
${NSD_SetState} $CheckBox2 1
${ElseIf} $Check2 == 0
${NSD_SetState} $CheckBox2 0
${Else}
${NSD_SetState} $CheckBox2 0
${EndIf}
/******************************************************************************/
${NSD_CreateRadioButton} 192u 0u 120u 10u "Для текущего пользователя"
Pop $RadioButton1
${NSD_OnClick} $RadioButton1 RadioButton1
/******************************************************************************/
${NSD_CreateRadioButton} 192u 15u 120u 10u "Для всех пользователей"
Pop $RadioButton2
${NSD_OnClick} $RadioButton2 RadioButton2
/******************************************************************************/
${If} $Radio1 == 1
${OrIf} $Radio2 == 0
${NSD_SetState} $RadioButton1 1
${NSD_SetState} $RadioButton2 0
${ElseIf} $Radio1 == 0
${OrIf} $Radio2 == 1
${NSD_SetState} $RadioButton1 0
${NSD_SetState} $RadioButton2 1
${Else}
${NSD_SetState} $RadioButton1 1
${NSD_SetState} $RadioButton2 0
${EndIf}
${NSD_CreateBrowseButton} 250u 70u 50u 13u "Обзор..."
Pop $BrowseButton
${NSD_OnClick} $BrowseButton BrowseButton
/******************************************************************************/
${NSD_CreateText} 0u 70u 80% 13u "$INSTDIR"
Pop $Text
System::Call `shlwapi::SHAutoComplete(i$Text,i1)`
${NSD_OnChange} $Text DirChange
/******************************************************************************/
nsDialogs::Show
FunctionEnd
/******************************************************************************/
Function CheckBox1
Pop $CheckBox1
${NSD_GetState} $CheckBox1 $Check1
FunctionEnd
Function CheckBox2
Pop $CheckBox2
${NSD_GetState} $CheckBox2 $Check2
FunctionEnd
Function RadioButton1
Pop $RadioButton1
${NSD_GetState} $RadioButton1 $Radio1
${NSD_GetState} $RadioButton2 $Radio2
FunctionEnd
Function RadioButton2
Pop $RadioButton2
${NSD_GetState} $RadioButton1 $Radio1
${NSD_GetState} $RadioButton2 $Radio2
FunctionEnd
/******************************************************************************/
Function BrowseButton
Pop $BrowseButton
nsDialogs::SelectFolderDialog "Выберите папку..." "$INSTDIR"
Pop $INSTDIR
${IfNot} $INSTDIR == "error"
${NSD_SetText} $Text "$INSTDIR"
${EndIf}
FunctionEnd
/******************************************************************************/
Function DirChange
Pop $Text
GetDlgItem $0 $HWNDPARENT 1
${NSD_GetText} $Text `$INSTDIR`
${GetRoot} $INSTDIR $1
${If} $INSTDIR == ""
${OrIf} $1 == ""
EnableWindow $0 0
${Else}
EnableWindow $0 1
${EndIf}
FunctionEnd
/******************************************************************************/
Function fnCustomLeave
${NSD_GetText} $Text "$INSTDIR"
${If} $INSTDIR == ""
Abort
${EndIf}
${NSD_GetState} $CheckBox1 $Check1
${NSD_GetState} $CheckBox2 $Check2
${NSD_GetState} $RadioButton1 $Radio1
${NSD_GetState} $RadioButton2 $Radio2
FunctionEnd
/******************************************************************************/
/******************************************************************************/
Section Test
DetailPrint "$$INSTDIR = $INSTDIR"
DetailPrint ""
/**********/
${If} $Check1 = 1
DetailPrint '"Ярлык на рабочий стол"'
DetailPrint ""
${EndIf}
/**********/
${If} $Check2 = 1
DetailPrint '"Ярлык на панель быстрого запуска"'
DetailPrint ""
${EndIf}
/**********/
${If} $Radio1 = 1
DetailPrint '"Для текущего пользователя"'
DetailPrint ""
${EndIf}
/**********/
${If} $Radio2 = 1
DetailPrint '"Для всех пользователей"'
DetailPrint ""
${EndIf}
SectionEnd
|
-------
Спасибо ВСЕМ за то, что тратите свое время, что бы ПОМОЧЬ МНЕ.
Отправлено: 23:28, 13-05-2011
| #1178
|