【问题标题】:NSIS: How to remove/hide MUI_LICENSEPAGE_TEXT_BOTTOM?NSIS:如何删除/隐藏 MUI_LICENSEPAGE_TEXT_BOTTOM?
【发布时间】:2021-05-05 08:42:37
【问题描述】:

您好,正在阅读这篇文章。大约一周前,我发现了 NSIS,并且刚刚完成了我的第一个安装程序脚本。我设法通过网络搜索找到了几乎所有问题的答案,并设法创建了一个非常精细的安装程序。有一个问题我无法弄清楚,因为我尝试过的所有方法都不起作用,而且我在网上找不到我理解或足够具体的解决方案来解决这个问题。

我正在使用现代 UI“MUI2”。我在许可证页面上发现了一些增加富文本框大小的代码,效果很好,但现在窗口底部的文本 (MUI_LICENSEPAGE_TEXT_BOTTOM) 与它重叠并导致一些视觉错误。将其设置为空字符串不起作用,将其设置为单个空格也不起作用。我设法通过“FindWindow”和“GetDlgItem”让它消失,但我并不完全是一名程序员,所以我不具备如何正确设置它们的智慧或知识。我确实成功了,它也删除了富文本框,经过几个小时的失败,我终于放弃并转向了互联网。

NSIS 没有提供删除控件的简单方法,这让我有点震惊。我根本不想要“文本底部”标签,我希望它消失或至少隐藏。我知道我要删除的句柄是“1006”,因为我在 Resource Hacker 中打开了安装程序并从那里删除了标签。最让我烦恼的是它实际上运行良好并删除了标签,但它也破坏了安装程序,我必须在命令行上使用 NCRC 来启动它。因此,将其作为一个可行的解决方案...

TL;DR 我的问题是:如何隐藏或摆脱 MUI_LICENSEPAGE_TEXT_BOTTOM?

【问题讨论】:

    标签: nsis


    【解决方案1】:

    MUI2 已经有一个可以使用的变量:

    !include MUI2.nsh
    !define MUI_PAGE_CUSTOMFUNCTION_SHOW HideMui2Text
    !insertmacro MUI_PAGE_LICENSE
    !insertmacro MUI_LANGUAGE "English"
    
    Function HideMui2Text
    ShowWindow $mui.LicensePage.Text 0
    FunctionEnd
    

    如果你想手动做,那就是

    FindWindow $0 "#32770" "" $HWNDPARENT ; Find inner page
    GetDlgItem $1 $0 1006 ; Find control
    ShowWindow $1 0
    

    使用 Resource Hacker 时,您需要从 NSIS\Contrib\UIs 复制基本文件,并在脚本中将 MUI_UI 定义为修改后的 UI 文件的路径。

    【讨论】:

    • 这成功了。我使用了变量方法,我感觉它在某个地方存在,但我找不到任何提供可用变量列表的文档,例如这个。你知道这样的文件是否存在吗?不管怎样,感谢您的宝贵时间。
    • 遗憾的是,这些变量没有记录在案,但它们应该相当稳定。您可以在 MUI .nsh 文件中找到它们。
    猜你喜欢
    • 2021-10-04
    • 1970-01-01
    • 2021-02-16
    • 1970-01-01
    • 2013-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多