gpt4 book ai didi

nsis 自定义页面大小

转载 作者:行者123 更新时间:2023-12-01 07:44:55 29 4
gpt4 key购买 nike

我正在尝试创建一个显示我的网站的页面 ( nsWeb::ShowWebInPage )。
问题是,它无法显示整个页面。

如何为此页面定义新尺寸(高 x 宽)?

最佳答案

这是一项艰巨的任务。以下是使其工作的步骤,以一种有点灵活的方式。

下载资源黑客:http://www.angusj.com/resourcehacker/

然后决定是否要编辑 NSIS 的 Unicode 或 ANSI 版本。你可以两者都做,但为什么要麻烦。首先找到您的 Program Files\NSIS 文件夹。如果您为 ANSI 编译,这将是下一步中以下目录的 BASE 文件夹。如果您正在为 unicode 进行编译,请进入 Program Files\NSIS\Unicode 文件夹,这现在是您下一步的基本文件夹。

查看\Contrib\UIs 文件夹内部。这个文件夹存储了一堆可执行文件。根据您使用的 MUI2 配置,您需要编辑相应的文件和 modern.exe。文件的版本取决于您是否有标题图像,是否正确调整等。

例如,就我而言,我的安装程序脚本中有这些定义

!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_RIGHT

现在,当我查看\Contrib\Modern UI 2\Interface.nsh 时,我可以很容易地找出我需要编辑哪个文件。这是我的看法:
!insertmacro MUI_DEFAULT MUI_UI "${NSISDIR}\Contrib\UIs\modern.exe"
!insertmacro MUI_DEFAULT MUI_UI_HEADERIMAGE "${NSISDIR}\Contrib\UIs\modern_headerbmp.exe"
!insertmacro MUI_DEFAULT MUI_UI_HEADERIMAGE_RIGHT "${NSISDIR}\Contrib\UIs\modern_headerbmpr.exe"
!insertmacro MUI_DEFAULT MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!insertmacro MUI_DEFAULT MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
!insertmacro MUI_DEFAULT MUI_BGCOLOR "FFFFFF"

由于我使用的是 MUI_HEADERIMAGE_RIGHT,我将编辑 modern_headerbmpr.exe 文件。

现在,打开 Resource Hacker 并加载您要编辑的文件。 Resource Hacker 有一个 GUI,因此当您逐步浏览每个对话框和对话框上的每个控件时,您可以在按“重新编译”后看到 GUI 更改的一面。这部分非常简单。逐步完成所有对话框(为什么不)并编辑控件和大小,包括主安装程序的控件和大小。在此文件中,只有一个,因此您还需要打开 modern.exe,其中包含进入安装程序页面的子控件。再次,逐步浏览所有对话框并更改所有大小,使每个控件看起来都不错。编译,并将文件保存回此文件夹。

加分项:对于测试,只需覆盖原始文件即可。你确实备份了,对吧?对于部署,为您编辑的每个文件命名新文件,例如“modern-wide.exe”。稍后,我们可以用一点魔法在这些之间动态切换。

重新编译您的安装程序,现在您应该看到一个新大小的安装程序。

如果不这样做,请检查您实际上位于正确的 ANSI 与 UNICODE 文件夹中,否则您的更改将不起作用。

但是,某些屏幕会动态添加控件。例如,查看\Contrib\Modern UI 2\Pages\Welcome.nsh。

此文件在代码中添加标题标签和欢迎文本,而不是通过 exe 文件。啊,我知道!所以找到宏:
!macro MUI_FUNCTION_WELCOMEPAGE PRE LEAVE

这些代码行:
${NSD_CreateBitmap} 0u 0u 109u 193u ""
...
${NSD_CreateLabel} 120u 10u 195u ${MUI_WELCOMEPAGE_TITLE_HEIGHT}u "${MUI_WELCOMEPAGE_TITLE}"
...
${NSD_CreateLabel} 120u ${MUI_WELCOMEPAGE_TEXT_TOP}u 195u 130u "${MUI_WELCOMEPAGE_TEXT}"

如您所见,此处的单位是 X Y WIDTH HEIGHT,因此现在您可以修改这些控件。当然,如果您不使用欢迎页面,请不要打扰。但是您可能需要以这种方式编辑对您不起作用的页面。

您可以覆盖原始文件,或者再次保存文件,并在文件名后附加“-wide”。

现在,你基本上完成了!

现在,为了使切换更容易,我假设您保存了:
welcome.nsh as welcome-wide.nsh
modern.exe as modern-wide.exe
and let's say modern_headerbmpr.exe as modern_headerbmpr-wide.exe

现在,在您的安装程序中,添加这个 !define BEFORE 包括 MUI2.nsh:
!define MUI_ALTERNATE_SIZE_EXT "-wide" 

在 interface.nsh 中,将代码更改为:
!ifdef MUI_ALTERNATE_SIZE_EXT
!insertmacro MUI_DEFAULT MUI_UI "${NSISDIR}\Contrib\UIs\modern${MUI_ALTERNATE_SIZE_EXT}.exe"
!insertmacro MUI_DEFAULT MUI_UI_HEADERIMAGE "${NSISDIR}\Contrib\UIs\modern_headerbmp.exe"
!insertmacro MUI_DEFAULT MUI_UI_HEADERIMAGE_RIGHT "${NSISDIR}\Contrib\UIs\modern_headerbmpr${MUI_ALTERNATE_SIZE_EXT}.exe"
!insertmacro MUI_DEFAULT MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!insertmacro MUI_DEFAULT MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
!insertmacro MUI_DEFAULT MUI_BGCOLOR "FFFFFF"
!else
!insertmacro MUI_DEFAULT MUI_UI "${NSISDIR}\Contrib\UIs\modern.exe"
!insertmacro MUI_DEFAULT MUI_UI_HEADERIMAGE "${NSISDIR}\Contrib\UIs\modern_headerbmp.exe"
!insertmacro MUI_DEFAULT MUI_UI_HEADERIMAGE_RIGHT "${NSISDIR}\Contrib\UIs\modern_headerbmpr.exe"
!insertmacro MUI_DEFAULT MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!insertmacro MUI_DEFAULT MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
!insertmacro MUI_DEFAULT MUI_BGCOLOR "FFFFFF"
!endif

当您将 MUI_ALTERNATE_SIZE_EXT 定义为“-wide”时,这实际上将您的安装程序从常规切换到“-wide”。请注意我如何将 ${MUI_ALTERNATE_SIZE_EXT} 直接添加到我更改的文件的文件名包含中,您当然应该为您在开始时最终更改的文件执行此操作。

现在,您还需要在 MUI2.NSH 文件中执行此操作,如下所示:
!ifdef MUI_ALTERNATE_SIZE_EXT
!include "Pages\Components.nsh"
!include "Pages\Directory.nsh"
!include "Pages\Finish.nsh"
!include "Pages\InstallFiles.nsh"
!include "Pages\License.nsh"
!include "Pages\StartMenu.nsh"
!include "Pages\UninstallConfirm.nsh"
!include "Pages\Welcome${MUI_ALTERNATE_SIZE_EXT}.nsh"
!else
!include "Pages\Components.nsh"
!include "Pages\Directory.nsh"
!include "Pages\Finish.nsh"
!include "Pages\InstallFiles.nsh"
!include "Pages\License.nsh"
!include "Pages\StartMenu.nsh"
!include "Pages\UninstallConfirm.nsh"
!include "Pages\Welcome.nsh"
!endif

当您编辑更多文件时,您只需将您创建的每个新 UI 的一个版本保存在单独的文件名中,现在您只需使用一个定义即可切换安装程序的 UI 样式。您可以随意命名文件,并将此方案扩展到您可能遇到问题的其他领域。

做到这一点不是一件容易的事,但它是可以做到的。

关于nsis 自定义页面大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5530372/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com