2011-05-17 81 views
1

我看到没有用于更改NSIS中的向导图像的CPACK_xxx变量(如CPACK_PACKAGE_ICON)。 所以我复制了NSIS.template.in并对其进行了修改。我可以这样做:如何通过CMake/CPack在NSIS中设置向导图像?

定义MUI_WELCOMEFINISHPAGE_BITMAP! “C:\工作\项目\ IMG \ wizardInstall.bmp” 定义MUI_UNWELCOMEFINISHPAGE_BITMAP! “C:\工作\项目\ IMG \ wizardUninstall.bmp”

和它会工作。但是,源代码存放在许多开发人员合作的存储库中,并且保留绝对路径并不是一个好主意。 我试图找到一些方法来获得我的源路径,并以某种方式创建从那个图像路径,但无济于事。因此,如果有人知道我如何在NSIS中设置向导图像,或者将源目录(并创建从它创建的路径)传递给我的模板文件,请让我知道。

+0

您可以尝试修改'NSIS.template.in'文件在运行'cmake'使用[文件](http://www.cmake.org/cmake/help/cmake-2-8-docs.html#command:file)命令。例如:'file(APPEND NSIS.template.in!define FILEID $ {PROJECT_SOURCE_DIR}/path/to/file!define)' – beduin 2011-05-17 09:17:31

+0

我可以用这种方式修改文件..或者甚至更好,复制它然后附加到复制。然而,那么定义将会在脚本的底部结束,导致类似于:MUI_WELCOMEFINISHPAGE_BITMAP已经被定义(即使我已经取消了它的定义)...虽然即使它没有导致预处理错误,它仍然在MUI的!insertmacro之后。 – Amy 2011-05-17 19:24:52

回答

0

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

它们存在于每个具有NSIS安装在$ {NSISDIR} \的Contrib \图形\向导\ win.bmp

使用!define MUI_WELCOMEFINISHPAGE_BITMAP bmp_file在.nsi脚本来改变他们的机器上。

0

既然你已经定制NSIS.template.in文件,据推测是与CONFIGURE_FILE()命令配置模板,为什么不把下面的你NSIS.template.in:

!define MUI_WELCOMEFINISHPAGE_BITMAP "@[email protected]" 
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "@[email protected]" 

然后,在您设置其他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") 
+0

谢谢。但似乎这些变量必须只有“CPACK”前缀。否则,CPack会忽略它们,并且它们在nsi中会有一个空值。 – brighteyed 2012-09-11 11:34:24

+0

路径未正确定义,请参阅:http://www.cmake.org/pipermail/cmake/2008-June/022085.html – malat 2015-02-27 15:26:58