8

我正在努力将图像添加到用NSIS/MUI2编写的安装程序的第一页。

这是我正在使用的代码的精简版本。

!include "MUI2.nsh"

!define MUI_HEADERIMAGE
    !define MUI_HEADERIMAGE_BITMAP nsis-header.bmp

!define MUI_WELCOMEFINISHPAGE_BITMAP nsis-welcome.bmp

OutFile "Setup.exe"

# Set language
!insertmacro MUI_LANGUAGE "English"

# Pages for installation
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "..\LICENSE"
!insertmacro MUI_PAGE_FINISH

Section Foo
SectionEnd

标题在许可页面上正确显示,但我无法让它显示在欢迎页面上。我尝试使用 164x314 图像(如文档建议的那样),位图保存在 16b 或 24b 或 32b 中,与标题相同的图像(以确保位图没有问题),在 Win2k 下编译设置和 Linux... 没有任何效果。

位图正确存储在设置中:

$ 7z l demyo-1.4.exe  | grep modern- | awk '{ print $4 }'
$PLUGINSDIR/modern-header.bmp
$PLUGINSDIR/modern-wizard.bmp

知道我做错了什么吗?

4

7 回答 7

17

即使有安德斯提供的指导,我也无法让它发挥作用。我的问题是图像本身。

这些步骤对我使用 GIMP 2.8.10 有效:

  • 使用 RGB 模式(图像 > 模式 > RGB)创建图像,使用适合您创建的任何大小(164x314for MUI_WELCOMEFINISHPAGE_BITMAP150x57for MUI_HEADERIMAGE_BITMAP
  • 文件 > 导出为 ...
  • 使用 .bmp 扩展名命名您的文件
  • 点击“导出”
  • 在标题为“将图像导出为 BMP”的窗口中,展开“兼容性选项”并选中“不写入色彩空间信息”框
  • 此外,在标题为“将图像导出为 BMP”的窗口中,展开“高级选项”并选中“R8 G8 B8”旁边的“24 位”下的单选按钮
  • 点击“导出”

现在重新编译您的 nsi 脚本,您的安装程序应该使用您指定的图像。

于 2014-10-20T17:53:13.543 回答
10

MUI_LANGUAGE宏必须MUI_PAGE_*在源文件中的宏之后

于 2009-08-27T18:52:21.997 回答
7

对于像我这样有同样问题但(略有)不同解决方案的其他人:

确保你有 MUI_LANGUAGE 宏。(正如真正的答案所暗示的那样,它必须在页面宏之后)。如果你根本不包括它,很多东西似乎都不起作用,不仅是图像,甚至是一些文本,等等。

!insertmacro MUI_LANGUAGE "English"
于 2011-05-28T22:44:22.007 回答
3

确保您的图像是 8 位的

于 2010-05-04T18:09:06.017 回答
1

您的代码看起来不错,但我注意到您说:

我尝试使用 164x364 图像(如文档建议的那样)

文档实际上推荐 164x314 。因此,如果这不仅仅是您的错字,请尝试调整图像大小。

如果这没有帮助,请告诉我们显示的是什么而不是您的图像。它是默认图像还是只是空白?

于 2009-08-27T14:26:10.067 回答
1

您想查看nsis-welcome.bmp文件并将modern-wizard.bmp.

于 2011-04-15T06:36:14.903 回答
0

我遇到了同样的问题,问题已解决,如原始答案中所述。

!define MUI_ABORTWARNING
!define MUI_ICON "my.ico"
!define MUI_UNICON "my.ico"

!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_BITMAP orange.bmp
!define MUI_WELCOMEFINISHPAGE_BITMAP orange_b.bmp

!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "LicenseAgreement.rtf"
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"

!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES

这里有一个有趣的地方,如果语言文件已经加载到任何头文件的其他位置,使用

LoadLanguageFile "${NSISDIR}\Contrib\Language files\English.nlf" ;don't include while using MUI2

然后 NSIS 报告以下错误。

Error: can't load same language file twice.
Error in macro MUI_LANGUAGE on macroline 9

必须注释掉任何包含的语言文件才能看到标题图像。

于 2014-11-04T09:56:57.377 回答