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

Показать сообщение отдельно
MKN MKN вне форума

Ветеран


Сообщения: 2355
Благодарности: 557

Профиль | Отправить PM | Цитировать


Цитата MaGoth:
как заблочить кнопу далее в окне компонентов если ни один из них еще не выбран ? »
Уже было реализовано kotkovets (для стандартых страниц) :
Код: Выделить весь код
OutFile "NoActivButtonInst.exe"

var hInst

!include "MUI2.nsh"

!insertmacro MUI_PAGE_WELCOME
   ;функция во время открытия странички компонентов
   !define MUI_PAGE_CUSTOMFUNCTION_SHOW COMPONENTS_SHOW
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE Russian

;макрос проверки секций, если одна из секций отмечена возврат - 1, иначе - 0;
;в intsec - указываем количество секций в скрипте
!macro CheckSection intsec ret
   Push ${intsec}
   System::Store SR2
   ${For} $R0 1 $R2
       SectionGetFlags $R0 $R1
       ${IfThen} $R1 == 1 ${|}${Break}${|}
   ${Next}
   Push $R1
   System::Store L
   Pop ${ret}
!macroend

SubSection /e test IDS_1
Section  /o "Компонент №1" ID_1
SectionEnd
Section /o "Компонент №2" ID_2
SectionEnd
Section /o "Компонент №3" ID_3
SectionEnd
Section /o "Компонент №4" ID_4
SectionEnd
Section /o "Компонент №5" ID_5
SectionEnd
Section /o "Компонент №6" ID_6
SectionEnd
SubSectionEnd

Function .onSelChange
!insertmacro StartRadioButtons $1
    !insertmacro RadioButton ${ID_1}
    !insertmacro RadioButton ${ID_2}
    !insertmacro RadioButton ${ID_3}
    !insertmacro RadioButton ${ID_4}
    !insertmacro RadioButton ${ID_5}
    !insertmacro RadioButton ${ID_6}
!insertmacro EndRadioButtons
!insertmacro CheckSection 6 $R0
  StrCmp $R0 0 0 +2
  EnableWindow $hInst ${SW_HIDE} ;отключаем кнопку "установить"
  StrCmp $R0 1 0 +2
  EnableWindow $hInst ${SW_SHOW} ;включаем кнопку "установить"
FunctionEnd

Function .OnInit
  StrCpy $1 ${ID_1}
  ;SectionSetFlags ${IDS_1} ${SECTION_OFF} ;фиктивно отключаем группу
  ;чтоб компоненты в группе по умолчанию были свёрнуты
  ;SectionSetFlags ${IDS_1} -290
FunctionEnd

Function COMPONENTS_SHOW
  GetDlgItem $hInst $HWNDPARENT 1 ;находим HWND кнопки "установить"
  !insertmacro CheckSection 6 $R0
  StrCmp $R0 0 0 +2
  EnableWindow $hInst ${SW_HIDE} ;отключаем кнопку "установить"
  StrCmp $R0 1 0 +2
  EnableWindow $hInst ${SW_SHOW} ;включаем кнопку "установить"
FunctionEnd
Ессно код можно корректировать для своих задач.

Цитата MaGoth:
как сейчас обстоят дела с определением винды 10й ? »
Как и ранее - без проблем. Вариантов море. К примеру, железно работает детект. W10, с помощью StdUtils.
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:47, 29-03-2018 | #2194