微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NSIS:如何删除/隐藏 MUI_LICENSEPAGE_TEXT_BOTTOM?

如何解决NSIS:如何删除/隐藏 MUI_LICENSEPAGE_TEXT_BOTTOM?

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

我使用的是现代用户界面“MUI2”。我发现了一些代码增加许可证页面上富文本框的大小,效果很好,但现在窗口底部的文本 (MUI_LICENSEPAGE_TEXT_BottOM) 与它重叠并导致一些视觉错误。将其设置为空字符串不起作用,将其设置为单个空格不起作用。我设法用“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 $0 "#32770" "" $HWNDPARENT ; Find inner page
GetDlgItem $1 $0 1006 ; Find control
ShowWindow $1 0

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。