【发布时间】:2011-04-03 15:00:58
【问题描述】:
我正在尝试创建一个显示我的网站的页面 (nsWeb::ShowWebInPage)。
问题是,它不能显示整个页面。
如何为该页面定义新的尺寸(高 x 宽)?
【问题讨论】:
-
有一个默认页面大小,如果想更改为我的比例
标签: nsis
我正在尝试创建一个显示我的网站的页面 (nsWeb::ShowWebInPage)。
问题是,它不能显示整个页面。
如何为该页面定义新的尺寸(高 x 宽)?
【问题讨论】:
标签: nsis
这是一项艰巨的任务。以下是使其工作的步骤,以一种有点灵活的方式。
下载资源黑客:http://www.angusj.com/resourcehacker/
然后决定是否要编辑 Unicode 或 ANSI 版本的 NSIS。你可以两者都做,但为什么要麻烦。首先找到您的 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 样式。您可以根据需要命名文件,并将此方案扩展到可能遇到问题的其他区域。
这不是一件容易的事,但可以做到。
【讨论】:
你有两个选择:
【讨论】:
您必须使用 Resource Hacker 调整所有对话框的大小。 标准对话框(内部)大小为 300*140 单位,随意增加。
不要忘记在这个新尺寸上增加所有对话框(许可证页面、安装页面、目录页面等)。
【讨论】: