Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для kotkovets

Ветеран


Сообщения: 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