NSIS 安装程序许可证页面仅显示“关闭”和“取消”按钮

Posted

技术标签:

【中文标题】NSIS 安装程序许可证页面仅显示“关闭”和“取消”按钮【英文标题】:NSIS installer License page only shows "Close" and "Cancel" buttons 【发布时间】:2014-07-29 10:29:32 【问题描述】:

我使用 NSIS 2.46 在 Windows 上构建了一个简单的安装程序。 那是许可证页面的代码

# UI
!include "MUI2.nsh"
!define MUI_LICENSEPAGE_RADIOBUTTONS
!insertmacro MUI_PAGE_LICENSE "..\legal\disclaimer.txt"
!insertmacro MUI_LANGUAGE "English"

当我运行安装程序时,许可证页面会正确显示许可证文本,但只有一个禁用的“关闭”和一个启用的“取消”按钮。一旦我将选中的单选按钮更改为“我接受许可协议的条款”,就会启用“关闭”按钮。如果我单击它们,这两个按钮都会导致安装程序退出。

如果许可被接受,我如何将脚本更改为具有“继续”按钮?

【问题讨论】:

【参考方案1】:

只有一个许可证页面的安装程序是毫无意义的,如果你在它之后添加另一个页面,一切都应该正常运行:

!include "MUI2.nsh"
!define MUI_LICENSEPAGE_RADIOBUTTONS
!insertmacro MUI_PAGE_LICENSE "$__FILE__"
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"

不建议创建没有 InstFiles 页面的安装程序,但可以这样做:

!include "MUI2.nsh"
!define MUI_LICENSEPAGE_RADIOBUTTONS
!define MUI_PAGE_CUSTOMFUNCTION_SHOW SetNextBtnTextToInstall
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE DoInstall
!insertmacro MUI_PAGE_LICENSE "$__FILE__"
!insertmacro MUI_LANGUAGE "English"

Function SetNextBtnTextToInstall
GetDlgItem $0 $hwndparent 1
$NSD_SetText $0 "$(^InstallBtn)"
FunctionEnd

Function DoInstall
MessageBox mb_ok "Install would take place here..."
SetErrorLevel 0
Quit
FunctionEnd

【讨论】:

添加另一个页面就可以了。我只是不完全理解为什么只显示许可证是没有意义的。我之前有一个基本的安装程序,没有任何 MUI 元素。它刚刚开始安装并显示一个进度条。我想——因为客户想要显示一个许可证——添加一个许可证页面就足够了,其他任何东西都应该像以前一样运行。但是,我添加了页面 MUI_PAGE_INSTFILES,结果证明这是一个好看的进度条,并且一切正常。谢谢安德斯!

以上是关于NSIS 安装程序许可证页面仅显示“关闭”和“取消”按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何跳过 NSIS“组件”页面?

一种通过在 NSIS 安装程序中进行计算的函数来警告用户一点冻结的方法

NSIS 双模式安装程序。检查路径有效性

安装游戏和QQ时出现NSIS错误该怎么解决?

Wamp:Phpmyadmin 显示空白页面,本地主机页面正在工作 [关闭]

Microsoft Office 无法验证此应用程序的许可证。修复尝试失败或者已被用户取消。应用程序将立即关闭。