Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
InstallDirRegKey的CMake/CPack命令_Cmake_Nsis_Cpack - Fatal编程技术网

InstallDirRegKey的CMake/CPack命令

InstallDirRegKey的CMake/CPack命令,cmake,nsis,cpack,Cmake,Nsis,Cpack,在NSIS脚本文件中,可以设置以下内容,以使用注册表项作为安装目录: InstallDirRegKey HKCU "Software\Test" "RegEntry" 我想知道是否可以从cmake文件设置此命令,以便自动生成NSIS脚本。安装目录的设置方式大致相同,如下所示: SET(CPACK_PACKAGE_INSTALL_DIRECTORY "testDir") 非常感谢我并没有完全按照您的意图进行操作,但如果您只想在NSIS文件中使用自定义命令,则可以执行以下操作: list(APP

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

InstallDirRegKey HKCU "Software\Test" "RegEntry"
我想知道是否可以从cmake文件设置此命令,以便自动生成NSIS脚本。安装目录的设置方式大致相同,如下所示:

SET(CPACK_PACKAGE_INSTALL_DIRECTORY "testDir")

非常感谢

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

list(APPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS " 
                InstallDirRegKey HKCU \"Software\\Test\" \"RegEntry\"
               ")
要小心反斜杠,需要避开双引号和文字反斜杠。我想你可能需要4个反斜杠而不是2个反斜杠,但是试试看。检查生成的NSIS文件,并根据需要添加更多反斜杠

编辑:

还有另一种更完整的方法来定制NSIS安装脚本。根据这一点:您可以将NSIS.template.in(从CMake安装)复制到源代码树(位于CMake_模块_路径上的目录中)并修改它

 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'
                ")

我希望命令在NSIS文件的开头运行(如果可能,在节之外);因此,它被用作默认安装位置。根据这一点:您可以将NSIS.template.in复制到源代码树(位于CMAKE_模块路径上的目录中)并对其进行修改。这可能会奏效。