3

如何阻止 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
4

1 回答 1

4

使用Abort命令。

NSIS 手册,第 4 章,脚本参考,第 5 节,页面,第 3 小节,回调

leave-function 允许您使用Abort强制用户停留在当前页面上。

于 2012-05-15T22:34:59.343 回答