如何通过CMake/CPack在NSIS中设置向导映像?
我发现在NSIS中没有用于更改向导映像的CPACK_xxx变量(如CPACK_PACKAGE_图标)。 所以我复制了NSIS.template.in并修改了它。我可以这样做:如何通过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
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中的值将为空。路径定义不正确,请参阅: