InstallDirRegKey的CMake / CPack命令

时间:2013-08-19 10:49:36

标签: cmake nsis cpack

在NSIS脚本文件中,可以设置以下内容,以使用注册表项作为安装目录:

InstallDirRegKey HKCU "Software\Test" "RegEntry"

我想知道是否可以从cmake文件设置此命令,以便自动生成NSIS脚本。安装目录的方式大致相同:

SET(CPACK_PACKAGE_INSTALL_DIRECTORY "testDir")

非常感谢

2 个答案:

答案 0 :(得分:2)

我并没有完全按照您的要求进行操作,但如果您只想在NSIS文件中使用自定义命令,则可以执行以下操作:

list(APPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS " 
                InstallDirRegKey HKCU \"Software\\Test\" \"RegEntry\"
               ")

小心反斜杠,需要逃避双引号和文字反斜杠。我认为你可能需要4个反斜杠而不是2个文字反斜杠,但试试看看。检查生成的NSIS文件,并根据需要添加更多反斜杠。

修改

还有另一种更完整的方法来自定义NSIS安装脚本。根据这个:http://cmake.org/Wiki/CMake:CPackNSISAdvancedTips你可以将NSIS.template.in(从你的CMake安装)复制到你的源代码树(在你的CMAKE_MODULE_PATH目录中)并修改它。

答案 1 :(得分:0)

 list(APPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS " 
                 InstallDirRegKey HKCU \"Software\\Test\" \"RegEntry\"
                ")

将我的机器翻译为

InstallDirRegKey HKCU ;Software\Test" "RegEntry;`

尝试相当

 list(APPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS " 
                InstallDirRegKey HKCU 'Software\\\\Test' 'RegEntry'
                ")