如何在安装时禁用NSIS中的按钮?

如何在安装时禁用NSIS中的按钮?,nsis,Nsis,我正在创建一个要安装多个组件的安装程序(提供复选框以选择所需的组件)。 现在,假设用户没有选择任何选项,即使组件页面上的“下一步”按钮被激活。在这里,我想在没有选择任何选项时禁用“下一步”按钮。 有人能告诉我怎么做吗? 请帮助我如果您将标准收集窗口用作MUI或XPUI,那么您的问题很难解决,如果您使用的是现代UI(MUI),那么下一个代码可以帮助您编写所需的功能(在XPUI的情况下,这根本不起作用) 警告: 我没有测试下一个过程(刚刚编译),因为我目前正在使用XPUI,并且我的安装程序中不推荐M

我正在创建一个要安装多个组件的安装程序(提供复选框以选择所需的组件)。 现在,假设用户没有选择任何选项,即使组件页面上的“下一步”按钮被激活。在这里,我想在没有选择任何选项时禁用“下一步”按钮。 有人能告诉我怎么做吗?
请帮助我

如果您将标准收集窗口用作MUI或XPUI,那么您的问题很难解决,如果您使用的是现代UI(MUI),那么下一个代码可以帮助您编写所需的功能(在XPUI的情况下,这根本不起作用)

警告: 我没有测试下一个过程(刚刚编译),因为我目前正在使用XPUI,并且我的安装程序中不推荐MUI,而且我没有提供逻辑来重新启用OnChange\u服务功能中的“next”按钮

  • 处理目标部分的事件更改,我不知道它是否有效,但我建议使用NSD_OnChange过程(在nsdialogs中定义)

    !!包括“nsdialogs.nsh”

    Function <...>
    
    ${NSD_OnChange} <... name of the target section ...> OnChange_Service
    
    FunctionEnd
    
    函数
    ${NSD_OnChange}OnChange_服务
    功能端
    
  • 在事件处理程序函数中,放置用于禁用按钮的代码

    函数OnChange\u服务

    变量/全局下一个按钮

    GetDlgItem$NextButton$HWNDPARENT 1

    SectionGetFlags$0

    输入$0$0&${SECTION_OFF}

    StrCmp$0“1”禁用扩展 戈托恩唐奇

    禁用文本:

    启用窗口$NextButton 0

    GoToEndochange:

    功能端

  • 如果需要对窗口控件状态进行一些操作,我认为最好使用自定义窗口

    让我知道它是否适用于你的项目


    (如果您想在代码中使用布尔运算符,请使用LogicLib插件)

    有什么新闻吗?建议的解决方案帮助您解决了问题?您的答案在这里