Цитата diakov:
Выбор типа установки/распаковки когда выбрана распаковка портабла чекбоксы неактивны, и при выборе одного из радиобутонов изображение справа меняется! »
|
Читайте
NSIS\Docs\nsDialogs\Readme.html там все расписано с примерами, ничего нестандартного в скрипте нет,
я потратил на создание скрипта 20 минут и +10 минут на чтение доков. Во общем пример для всех.
читать дальше »
Код:
!include "MUI2.nsh"
ShowInstDetails show
OutFile "Nstest.exe"
var dlg
var Label
var Check
var Check1
var CheckBox
var CheckBox1
var Radio
var Radio1
var RadioButton
var RadioButton1
var ImageHandle
var Image
!insertmacro MUI_PAGE_WELCOME
Page custom PageInit PageDestroy
!insertmacro MUI_PAGE_INSTFILES
;!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE "Russian"
Function .onInit
InitPluginsDir ;иницилизируем рабочую папку, куда будут распакованы картинки
File "/oname=$PLUGINSDIR\nsis-r.bmp" "${NSISDIR}\Contrib\Graphics\Header\nsis-r.bmp"
File "/oname=$PLUGINSDIR\orange-r.bmp" "${NSISDIR}\Contrib\Graphics\Header\orange-r.bmp"
FunctionEnd
Function PageInit
!insertmacro MUI_HEADER_TEXT "О-па" "Вот оно как МИхалыч!"
nsDialogs::Create 1018
Pop $dlg
${NSD_CreateLabel} 0u 0u 120u 12u "Пожалуйста, сделайте выбор:"
Pop $Label
;;
${NSD_CreateRadioButton} 0u 14u 120u 12u "Установка обычной версии"
Pop $RadioButton
${NSD_SetState} $RadioButton 1 ;делаем радиобутон отмеченным
${NSD_OnClick} $RadioButton RadioButton ;событие отметки радиобутона
;;
${NSD_CreateRadioButton} 0u 28u 150u 12u "Распаковка портативной версии"
Pop $RadioButton1
${NSD_OnClick} $RadioButton1 RadioButton1 ;событие отметки радиобутона
;;
${NSD_CreateCheckBox} 0u 100u 120u 12u "Ярлык(и) на рабочем столе"
Pop $CheckBox
${NSD_SetState} $CheckBox 1
;;
${NSD_CreateCheckBox} 0u 115u 100u 12u "Ярлыки в меню «Пуск»"
Pop $CheckBox1
${NSD_SetState} $CheckBox1 1
;;;;;;;;
${NSD_CreateBitmap} 190u 0 100% 100% "" ;создаем контрол для картинок
Pop $Image
${NSD_SetImage} $Image "$PLUGINSDIR\nsis-r.bmp" $ImageHandle ;загружаем картинку
nsDialogs::Show
${NSD_FreeImage} $ImageHandle ;удаляем картинку
FunctionEnd
Function switching
${NSD_GetState} $RadioButton $Radio ;снимаем статус отметки радиобуттона
${If} $Radio == 1 ;если радибуттон "Установка обычной версии" отмеченный то...
EnableWindow $CheckBox 1
EnableWindow $CheckBox1 1
${NSD_SetState} $CheckBox 1
${NSD_SetState} $CheckBox1 1
${NSD_FreeImage} $ImageHandle ;удаляем картинку
${NSD_SetImage} $Image "$PLUGINSDIR\nsis-r.bmp" $ImageHandle ;загружаем картинку
${Else} ;если радибуттон "Установка обычной версии" неотмеченный то...
EnableWindow $CheckBox 0 ;затеняем чекбокс
EnableWindow $CheckBox1 0 ;затеняем чекбокс
${NSD_SetState} $CheckBox 0 ;делаем чекбокс неотмеченным
${NSD_SetState} $CheckBox1 0 ;делаем чекбокс неотмеченным
${NSD_FreeImage} $ImageHandle ;удаляем картинку
${NSD_SetImage} $Image "$PLUGINSDIR\orange-r.bmp" $ImageHandle ;загружаем картинку
${EndIf}
FunctionEnd
;функции события отметки радиобуттонов
Function RadioButton
Pop $RadioButton
Call switching
FunctionEnd
Function RadioButton1
Pop $RadioButton1
Call switching
FunctionEnd
Function PageDestroy
;функция которая выполняется при закрытии кастомной станички
;снимаем статусы отметок радиобуттонов и чекбоксов
${NSD_GetState} $RadioButton $Radio
${NSD_GetState} $RadioButton1 $Radio1
${NSD_GetState} $CheckBox $Check
${NSD_GetState} $CheckBox1 $Check1
FunctionEnd
Section "-Обычная установка"
${If} $Radio == 1
;;;
;тут пишем все команды при обычной установке
DetailPrint "Обычная установка"
;;;
${EndIf}
SectionEnd
Section "-Распаковка портативной версии"
${If} $Radio1 == 1
;;;
;тут пишем все команды при распаковки портативной версии
DetailPrint "Распаковка портативной версии"
;;;
${EndIf}
SectionEnd
Section "-Ярлыки"
${If} $Check == 1
;;;
DetailPrint "Ярлык на рабочий стол"
;;;
${EndIf}
${If} $Check1 == 1
;;;
DetailPrint "Ярлык в меню Пуск"
;;;
${EndIf}
SectionEnd