代码之家  ›  专栏  ›  技术社区  ›  Xr.

NSI/MUI2中缺少欢迎图片

  •  6
  • Xr.  · 技术社区  · 17 年前

    我正在努力将图像添加到用编写的安装程序的第一页 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图像(如Doc建议的那样),位图保存在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 回复  |  直到 11 年前
        1
  •  10
  •   Anders    17 年前

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

        2
  •  10
  •   Travis    12 年前

    即使有安德斯提供的指导,我也不能让这个工作。我的问题是图像本身。

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

    • 使用rgb模式(image>mode>rgb)创建图像,使用适合您所创建内容的大小(164x364用于mui-welcomefinishpage_位图,150x57用于mui-headerimage_位图)
    • 文件>导出为…
    • 用.bmp扩展名命名文件
    • 点击“导出”
    • 在标题为“导出图像为BMP”的窗口中,展开“兼容性选项”,并选中“不写入颜色空间信息”框。
    • 此外,在标题为“导出图像为BMP”的窗口中,展开“高级选项”,并检查“R8 G8 B8”旁边的“24位”下的单选按钮。
    • 点击“导出”

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

        3
  •  5
  •   Cray    15 年前

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

    确保您有MUI语言宏。(正如真正的答案所示,它必须在页面宏之后)。 如果你一点也不包括它,很多事情似乎都不起作用,不仅是图像,甚至是一些文本,等等。

    !insertmacro MUI_LANGUAGE "English"
    
        4
  •  3
  •   diego2k    16 年前

    确保你的形象是8位

        5
  •  1
  •   Kyle Gagnet    17 年前

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

    我尝试了164x364图像(作为 DOC建议)

    这个 documentation 实际上推荐164x314。所以,如果这不仅仅是你的错别字,试着调整你的图像大小。

    如果这不起作用,请告诉我们显示的是什么,而不是您的图像。是默认图像还是空白图像?

        6
  •  1
  •   Echilon Mafarnakus    13 年前

    你想看看 nsis-welcome.bmp 归档并归档 modern-wizard.bmp .

        7
  •  0
  •   monotosh    12 年前

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

    !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
    

    然后NSI报告以下错误。

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

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