如何在 NSIS 安装(CMake)中设置图标

Posted

技术标签:

【中文标题】如何在 NSIS 安装(CMake)中设置图标【英文标题】:How to set an Icon in NSIS install (CMake) 【发布时间】:2015-02-27 15:20:22 【问题描述】:

CPACK_PACKAGE_ICON 的文档在 cmake wiki page 上非常有限。

以下内容不适合我(per):

set(CPACK_PACKAGE_ICON  "$CMAKE_CURRENT_SOURCE_DIR/images/MyIcon.bmp")
include(CPack)

它导致:

File: "C:/proj/my_library/images/MyIcon.bmp" -> no files found.
Usage: File [/nonfatal] [/a] ([/r] [/x filespec [...]] filespec [...] |
   /oname=outfile one_file_only)
Error in macro MUI_HEADERIMAGE_INIT on macroline 24
Error in macro MUI_GUIINIT on macroline 3
Error in macro MUI_FUNCTION_GUIINIT on macroline 4
Error in macro MUI_INSERT on macroline 11
Error in macro MUI_LANGUAGE on macroline 7
Error in script "C:/proj/bin-win/_CPack_Packages/win32/NSIS/project.nsi" on line 574 -- aborting creation process

那么如何在 NSIS 安装程序的安装过程中实际设置一个工作图标?图标实际上需要什么格式?

【问题讨论】:

【参考方案1】:

经过反复试验,我终于找到了两个技巧:

语法其实是:

set(CPACK_PACKAGE_ICON  "$CMAKE_CURRENT_SOURCE_DIR/images\\\\MyIcon.bmp")

并且 BMP 文件被限制为旧格式,这不是 imagemagick 的默认格式。例如:

$ file MyIcon.bmp
MyIcon.bmp: PC bitmap, Windows 98/2000 and newer format, 128 x 128 x 24

需要的是这样的:

$ convert MyIcon.bmp BMP3:MyIcon2.bmp
$ file MyIcon2.bmp
MyIcon2.bmp: PC bitmap, Windows 3.x format, 128 x 128 x 24

第一个表示 (Windows 98/2000 and newer format) 对我不起作用。

【讨论】:

不是150x57 in size(如果展开界面设置,在MUI_HEADERIMAGE_BITMAP_RTL下,页眉)? 这一直困扰着我,现在 6 年后,您仍然必须生成 BPM Windows 3.x 格式的图像,似乎很少有工具支持。 我认为这是由于 NSIS 安装程序造成的,我认为应该将 PNG 支持或其他东西添加到 NSIS。相关问题:sourceforge.net/p/nsis/feature-requests/559

以上是关于如何在 NSIS 安装(CMake)中设置图标的主要内容,如果未能解决你的问题,请参考以下文章

在 cmake 中设置 PKG_CONFIG_PATH

如何使用vs2013的NMake在cmake中设置v120xp

如何在 OS X 上的 Qt 应用程序中设置应用程序图标,足以分发?

在 vscode 中设置扩展的图标或徽标

如何使用 Ionic\Cordova 在 android 中设置图标和启动画面

如何在 Cordova 中设置图标?