如果不满足条件,则停止前进到下一页

Posted

技术标签:

【中文标题】如果不满足条件,则停止前进到下一页【英文标题】: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

【问题讨论】:

【参考方案1】:

使用Abort 命令。

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

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

【讨论】:

以上是关于如果不满足条件,则停止前进到下一页的主要内容,如果未能解决你的问题,请参考以下文章

RxSwift - 如果满足条件,则阻止/停止/忽略事件

如果条件不满足,则“短路”YARP RequestTransform 并返回自定义响应

如果满足条件,则移动到嵌套 for 循环中的下一次迭代

如果 IF 语句不满足第一个条件,它会停止评估吗?

如何解决我的提交按钮问题,我无法移动到下一页[重复]

if条件与嵌套