【问题标题】:Stop Advance to Next Page if conditions are not met如果不满足条件,则停止前进到下一页
【发布时间】:2012-05-15 22:13:43
【问题描述】:

如何阻止 NSIS 自定义页面前进到下一页?

我有一个自定义页面,用户可以在其中决定他们可以为哪个版本的应用程序安装我们的插件 - 因此有 3 个复选框可供选择。

用户必须选择至少 1 个版本来安装我们的插件,否则安装程序将无法安装任何内容。

因此,当用户单击下一步时,我需要检查是否选中了 1 个或多个复选框,如果没有,则禁用下一步并显示 MessageBox。

如果我无法停止前进到下一页,我可以禁用下一个按钮吗?

Page Custom CustomPageInitialise CustomPageFinalise
Function CustomPageFinalise
    Var /GLOBAL versToInstall
    ${NSD_GetState} $hasVersion8ChkBx  $0
    ${NSD_GetState} $hasVersion9ChkBx  $1
    ${NSD_GetState} $hasVersion10ChkBx $2
    IntOp $versToInstall $0 + $1
    IntOp $versToInstall $versToInstall + $2

    # TODO: stop advance to NEXT page if no versions selected to install
    # If no versions selected to install
    ${If} $versToInstall <= 0
        MessageBox MB_ICONEXCLAMATION|MB_OK "You must select at least one version of the Application to install our plugins to."
        # how do I stop the advance to the next page?
    ${EndIf}
FunctionEnd

【问题讨论】:

    标签: installation nsis


    【解决方案1】:

    使用Abort 命令。

    NSIS Manual, Chapter 4, Scripting Reference, section 5, Pages, subsection 3, Callbacks:

    离开功能允许您使用Abort 强制用户停留在当前页面上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-14
      • 2023-04-05
      相关资源
      最近更新 更多