在 CMake 中包含 NSIS 脚本
Including NSIS script in CMake
是否可以包含来自 CMake 的 NSIS 脚本,该脚本将 CPack 与 NSIS 一起使用?看来我只限于几个命令(doc),但一些命令表明有一种方法可以包含整个 NSIS 脚本,特别是:
CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS,
CPACK_NSIS_EXTRA_INSTALL_COMMANDS,
CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS
但是,当我尝试调用这些命令时:
SET(CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS "!include extra_preinstall.nsh")
没有任何反应。 (不包括 /NONFATAL
会引发错误,因此可能无法找到脚本。)
检查基本功能:
SET(CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS "MessageBox MB_OK \\"Hello world!\\"")
不对安装程序执行任何操作。
为什么没有出现 Hello World 按钮?为什么找不到脚本文件(即使我把它放在 CMake hiearchy 的每一层)?
Preinstall 并不意味着它在安装部分之前执行,因此您实际上必须单击 "install",然后执行命令。
安装和卸载也是如此。
至于包含外部脚本:用绝对路径包含就解决了一切。如果没有绝对路径,可以使用CMake工具轻松获取。
是否可以包含来自 CMake 的 NSIS 脚本,该脚本将 CPack 与 NSIS 一起使用?看来我只限于几个命令(doc),但一些命令表明有一种方法可以包含整个 NSIS 脚本,特别是:
CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS,
CPACK_NSIS_EXTRA_INSTALL_COMMANDS,
CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS
但是,当我尝试调用这些命令时:
SET(CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS "!include extra_preinstall.nsh")
没有任何反应。 (不包括 /NONFATAL
会引发错误,因此可能无法找到脚本。)
检查基本功能:
SET(CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS "MessageBox MB_OK \\"Hello world!\\"")
不对安装程序执行任何操作。
为什么没有出现 Hello World 按钮?为什么找不到脚本文件(即使我把它放在 CMake hiearchy 的每一层)?
Preinstall 并不意味着它在安装部分之前执行,因此您实际上必须单击 "install",然后执行命令。 安装和卸载也是如此。
至于包含外部脚本:用绝对路径包含就解决了一切。如果没有绝对路径,可以使用CMake工具轻松获取。