Ваша проблема действительно трудно решить, если вы используете стандартные окна сбора в качестве MUI или XPUI, если вы используете Modern UI (MUI), то следующий код может помочь вам закодировать необходимую вам функциональность (в случае XPUI это делаетне работает вообще)
ПРЕДУПРЕЖДЕНИЕ : я НЕ проверил следующие процедуры (только что скомпилированные), потому что в настоящее время я использую XPUI и устарел MUIБолее того, в моем инсталляторе я предоставил без логики для повторного включения кнопки «Далее» в функции OnChange_Service.
обрабатывает изменение события в целевой секции, я не знаю, работает ли он, но я предлагаю использовать процедуру NSD_OnChange (определенную в nsdialogs)
! include 'nsdialogs.nsh'
Function <...>
${NSD_OnChange} <... name of the target section ...> OnChange_Service
FunctionEnd
В функции обработчика событий поместите код для отключения вашей кнопки
Функция OnChange_Service
var / GLOBAL NextButton
GetDlgItem $ NextButton $ HWNDPARENT1
SectionGetFlags <... имя целевого раздела ...> $ 0
IntOp $ 0 $ 0 & $ {SECTION_OFF}
StrCmp $ 0 "1" DISABLENEXT GOTOENDONCHANGE
DISABLENEXT:
EnableWindow $ NextButton 0
GOTOENDONCHANGE:
functionend
Везде, где я думаю, лучше использовать пользовательское окноесли вам нужно выполнить некоторые манипуляции с состоянием элемента управления окном.
Сообщите мне, работает ли оно в вашем проекте
(Если вы хотите использовать логический оператор в своем коде, используйте LogicLibплагин)