Цитата BuZzOFF:
Пользователь выберет нужные элементы, и дальше инсталлятор будет работать только с отмеченными »
|
Тогда, первым делом переименуй кнопку ${NSD_CreateButton} 0u 124u 300u 15u "Install" .

Этой кнопкой будешь запускать инсталляцию после отметки чекбоксов, а родную кнопку Install - удаляешь со страницы
Функция почти такая же :
Код:

Function CheckItemState
StrCpy $R5 -1
loop:
IntOp $R5 $R5 + 1 ; счетчик номеров чекбоксов для GetCheckState
${NSD_LV_GetCheckState} $1 $R5 $R0 ; в $R0 - 1 или 0 , в зависимости от отметки чекбокса
StrCmp $R5 "$R3" Done ; выход из цикла после опроса последнего чекбокса
;MessageBox MB_OK "Состояние чекбокса №$R5 - $R0"
StrCpy $R8 "$R8 $R0"
Goto Loop
Done:
StrCpy $R8 $R8 -1 ; отсекаем 1 последний символ строки
MessageBox MB_OK "$R8" ; в $R8 - строка с последовательностью 1 и 0 , т.е. отмеченных или не отмеченных чекбоксов
SendMessage $HWNDPARENT 0x408 1 0
FunctionEnd
Вот это: StrCpy $R5 -1 и вот это: StrCpy $R8 $R8 -1 - коррекция издержек счёта... Может можно и по другому, не разбирался, т.к. так работает нормально...
В итоге : в $R8 - строка с последовательностью 1 и 0 , т.е. отмеченных или не отмеченных всех чекбоксов
А далее, в зависимости от того, который по счёту символ в строке будет 1, т.е. отмеченным чекбоксом, то простой логикой, если символ под номером таким то (а это номер точно известного компонента) равен 1 , то он и устанавливается. Конечно можно и по другому. Но так , как мне кажется, будет проще...