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

mal*_*lat 4 nsis cmake bmp cpack

CPACK_PACKAGE_ICONcmake Wiki页面上的文档非常有限。

以下对我不起作用():

set(CPACK_PACKAGE_ICON  "${CMAKE_CURRENT_SOURCE_DIR}/images/MyIcon.bmp")
include(CPack)
Run Code Online (Sandbox Code Playgroud)

它导致:

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
Run Code Online (Sandbox Code Playgroud)

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

mal*_*lat 7

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

语法实际上是:

set(CPACK_PACKAGE_ICON  "${CMAKE_CURRENT_SOURCE_DIR}/images\\\\MyIcon.bmp")
Run Code Online (Sandbox Code Playgroud)

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

$ file MyIcon.bmp
MyIcon.bmp: PC bitmap, Windows 98/2000 and newer format, 128 x 128 x 24
Run Code Online (Sandbox Code Playgroud)

需要的是:

$ convert MyIcon.bmp BMP3:MyIcon2.bmp
$ file MyIcon2.bmp
MyIcon2.bmp: PC bitmap, Windows 3.x format, 128 x 128 x 24
Run Code Online (Sandbox Code Playgroud)

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

  • 是[尺寸为150x57](http://nsis.sourceforge.net/Docs/Modern%20UI/Readme.html)(如果您展开“界面设置”,“页眉”,则位于MUI_HEADERIMAGE_BITMAP_RTL下)? (3认同)