CPack:如何执行多个 CPACK_NSIS_EXTRA_INSTALL_COMMANDS?
Posted
技术标签:
【中文标题】CPack:如何执行多个 CPACK_NSIS_EXTRA_INSTALL_COMMANDS?【英文标题】:CPack: How to perform multiple CPACK_NSIS_EXTRA_INSTALL_COMMANDS? 【发布时间】:2015-07-03 09:18:50 【问题描述】:我正在使用 CMake 2.8.11.2、CPack 和 NSIS 编写安装程序。我到了需要调用 MSVCR 等包含子安装程序的地步。这是我的 CMakeLists.txt 的样子:
set(CPACK_GENERATOR NSIS)
list ( APPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS " ExecWait ./tmp/vcredist_x64.exe")
list ( APPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS " ExecWait ./tmp/some-other-installer.exe")
list ( APPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS " RMDir /r ./tmp/")
INCLUDE(CPack)
但是,生成的 .nsi 文件包含以下(单)行
ExecWait ./tmp/vcredist_x64.exe; ExecWait ./tmp/some-other-installer.exe; RMDir /r ./tmp/
在生成包时导致错误“ExecWait 需要 1-2 个参数,得到 6 个”。
如何正确地将多个额外的命令传递给 NSIS?
【问题讨论】:
【参考方案1】:要添加多个命令,CPACK_NSIS_EXTRA_INSTALL_COMMANDS
需要设置为多行字符串:
list ( APPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS ...
...
string (REPLACE ";" "\n" CPACK_NSIS_EXTRA_INSTALL_COMMANDS "$CPACK_NSIS_EXTRA_INSTALL_COMMANDS")
include(CPack)
【讨论】:
谢谢,解决了。以上是关于CPack:如何执行多个 CPACK_NSIS_EXTRA_INSTALL_COMMANDS?的主要内容,如果未能解决你的问题,请参考以下文章