【问题标题】:NSIS installer License page only shows "Close" and "Cancel" buttonsNSIS 安装程序许可证页面仅显示“关闭”和“取消”按钮
【发布时间】: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"

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

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

【问题讨论】:

    标签: windows user-interface macros installation nsis


    【解决方案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,结果证明这是一个好看的进度条,并且一切正常。谢谢安德斯!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-15
    • 1970-01-01
    相关资源
    最近更新 更多