在NSIS / MUI2中缺少欢迎图像

时间:2009-08-27 14:01:20

标签: nsis

我很难将图像添加到使用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

知道我做错了什么?

7 个答案:

答案 0 :(得分:13)

即使有Anders提供的指导,我也无法使用它。我的问题在于图像本身。

这些步骤适用于我使用GIMP 2.8.10:

  • 使用RGB模式(图像>模式> RGB)创建图像,使用适合您正在创建的任何尺寸(MUI_WELCOMEFINISHPAGE_BITMAP为164x364,MUI_HEADERIMAGE_BITMAP为150x57)
  • 文件>导出为...
  • 使用.bmp扩展名命名您的文件
  • 点击“导出”
  • 标题为“将图像导出为BMP”的窗口中的
  • 展开“兼容性选项”,并选中“不写颜色空间信息”框。
  • 同样,在标题为“将图像导出为BMP”的窗口中展开“高级选项”并选中“R8 G8 B8”旁边“24位”下的单选按钮
  • 点击“导出”

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

答案 1 :(得分:10)

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

答案 2 :(得分:5)

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

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

!insertmacro MUI_LANGUAGE "English"

答案 3 :(得分:3)

确保您的图片为8位

答案 4 :(得分:1)

你的代码看似很好,但我注意到你说:

  

我尝试使用164x364图像(作为   doc推荐)

documentation实际建议164x314。因此,如果这不仅仅是您的错字,请尝试调整图片大小。

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

答案 5 :(得分:1)

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

归档

答案 6 :(得分: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

必须注释掉任何语言文件包含以查看标题图像。