NSIS:如何remove/hide MUI_LICENSEPAGE_TEXT_BOTTOM?

NSIS: How to remove/hide MUI_LICENSEPAGE_TEXT_BOTTOM?

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

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

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

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

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 [=11=] "#32770" "" $HWNDPARENT ; Find inner page
GetDlgItem  [=11=] 1006 ; Find control
ShowWindow  0

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