Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过CMake/CPack在NSIS中设置向导映像?_Cmake_Nsis_Cpack - Fatal编程技术网

如何通过CMake/CPack在NSIS中设置向导映像?

如何通过CMake/CPack在NSIS中设置向导映像?,cmake,nsis,cpack,Cmake,Nsis,Cpack,我发现在NSIS中没有用于更改向导映像的CPACK_xxx变量(如CPACK_PACKAGE_图标)。 所以我复制了NSIS.template.in并修改了它。我可以这样做: SET(MY_CPACK_MUI_WELCOMEFINISHPAGE_BITMAP "${CMAKE_SOURCE_DIR)/path/to/wizardInstall.bmp") SET(MY_CPACK_MUI_UNWELCOMEFINISHPAGE_BITMAP "${CMAKE_SOURCE_DIR

我发现在NSIS中没有用于更改向导映像的CPACK_xxx变量(如CPACK_PACKAGE_图标)。 所以我复制了NSIS.template.in并修改了它。我可以这样做:

SET(MY_CPACK_MUI_WELCOMEFINISHPAGE_BITMAP
    "${CMAKE_SOURCE_DIR)/path/to/wizardInstall.bmp")
SET(MY_CPACK_MUI_UNWELCOMEFINISHPAGE_BITMAP
    "${CMAKE_SOURCE_DIR)/path/to/wizardUninstall.bmp")
!!定义MUI\u WELCOMEFINISHPAGE\u位图“C:\work\project\img\wizardInstall.bmp” !定义MUI\u不受欢迎的FinishPage\u位图“C:\work\project\img\wizardUninstall.bmp”

它会起作用的。然而,源代码放在许多开发人员共同协作的存储库中,在那里保留绝对路径并不是一个好主意。 我试图找到一些方法来获取我的源路径,并以某种方式从该路径创建图像路径,但没有成功


因此,如果有人知道如何在NSIS中设置向导映像,或者如何将源目录(并从中创建路径)传递到模板文件,请告诉我。

您不需要编译整个NSIS来使用/更改这些映像

在${NSISDIR}\Contrib\Graphics\Wizard\win.bmp中安装了NSIS的每台计算机上都有这些文件


使用
!在.nsi脚本中定义MUI\u WELCOMEFINISHPAGE\u位图bmp\u文件来更改它们。

使用/更改这些图像不需要编译整个nsi

在${NSISDIR}\Contrib\Graphics\Wizard\win.bmp中安装了NSIS的每台计算机上都有这些文件


使用
!在.nsi脚本中定义MUI_WELCOMEFINISHPAGE_位图bmp_文件来更改它们。

既然您已经在自定义NSIS.template.in文件,而且它可能是一个使用CONFIGURE_file()命令配置的模板,为什么不将以下内容放入NSIS.template.in中:

!define MUI_WELCOMEFINISHPAGE_BITMAP "@MY_CPACK_MUI_WELCOMEFINISHPAGE_BITMAP@"
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "@MY_CPACK_MUI_UNWELCOMEFINISHPAGE_BITMAP@"
然后,在设置其他CPACK变量的CMakeLists.txt文件中,添加如下内容:

SET(MY_CPACK_MUI_WELCOMEFINISHPAGE_BITMAP
    "${CMAKE_SOURCE_DIR)/path/to/wizardInstall.bmp")
SET(MY_CPACK_MUI_UNWELCOMEFINISHPAGE_BITMAP
    "${CMAKE_SOURCE_DIR)/path/to/wizardUninstall.bmp")

既然您已经在自定义NSIS.template.in文件,并且它可能是使用CONFIGURE_file()命令配置的模板,为什么不将以下内容放入NSIS.template.in中:

!define MUI_WELCOMEFINISHPAGE_BITMAP "@MY_CPACK_MUI_WELCOMEFINISHPAGE_BITMAP@"
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "@MY_CPACK_MUI_UNWELCOMEFINISHPAGE_BITMAP@"
然后,在设置其他CPACK变量的CMakeLists.txt文件中,添加如下内容:

SET(MY_CPACK_MUI_WELCOMEFINISHPAGE_BITMAP
    "${CMAKE_SOURCE_DIR)/path/to/wizardInstall.bmp")
SET(MY_CPACK_MUI_UNWELCOMEFINISHPAGE_BITMAP
    "${CMAKE_SOURCE_DIR)/path/to/wizardUninstall.bmp")

您可以尝试在运行
cmake
时使用命令修改
NSIS.template.in
文件。例如:
文件(APPEND NSIS.template.in!define FILEID${PROJECT\u SOURCE\u DIR}/path/to/file!define)
我可以这样修改文件。。或者更好,复制它,然后附加到副本中。但是,定义将在脚本的底部结束,结果是:MUI_WELCOMEFINISHPAGE_位图已定义(即使我已取出它的定义)。。。尽管它不会导致预处理错误,但它仍然会在错误之后出现!用于MUI的insertmacro。在运行
cmake
命令时,您可以尝试在
文件中修改
NSIS.template。例如:
文件(APPEND NSIS.template.in!define FILEID${PROJECT\u SOURCE\u DIR}/path/to/file!define)
我可以这样修改文件。。或者更好,复制它,然后附加到副本中。但是,定义将在脚本的底部结束,结果是:MUI_WELCOMEFINISHPAGE_位图已定义(即使我已取出它的定义)。。。尽管它不会导致预处理错误,但它仍然会在错误之后出现!为MUI插入宏。谢谢。但似乎这些变量必须只有“CPACK”前缀。否则CPack将忽略它们,它们在nsi中的值将为空。路径定义不正确,请参阅:谢谢。但似乎这些变量必须只有“CPACK”前缀。否则CPack将忽略它们,它们在nsi中的值将为空。路径定义不正确,请参阅: