如何使用 CPACK_PACKAGE_INSTALL_REGISTRY_KEY 添加注册表项?

Posted

技术标签:

【中文标题】如何使用 CPACK_PACKAGE_INSTALL_REGISTRY_KEY 添加注册表项?【英文标题】:How add registry keys with CPACK_PACKAGE_INSTALL_REGISTRY_KEY? 【发布时间】:2017-06-06 15:33:35 【问题描述】:

我需要为 NSIS 安装程序安装一些注册表项。我正在使用 CPACK,我发现了这个命令CPACK_PACKAGE_INSTALL_REGISTRY_KEY。互联网上的文档不多,但我猜:

set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY
"MyReg\\\\MyKey" "$INSTALL_DIR\\\\" 
)

或者没有太大不同的东西。

我还在另一个主题上阅读了这篇文章:

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

但我不明白为什么使用最后一个命令而不是 CPACK 命令。

感谢您的帮助

【问题讨论】:

InstallDirRegKey 只是根据注册表中的值设置默认的 $InstDir 路径。 【参考方案1】:

我对 CPack 一无所知,但我猜 CPACK_PACKAGE_INSTALL_REGISTRY_KEY 也映射到 InstallDirRegKey 并且不能用于将通用值写入注册表。

尝试像这样插入原始 NSIS 指令:

SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "
  WriteRegStr HKLM 'Software\\\\MyApp' 'MyValue' 'MyData'
  WriteRegDWORD HKLM 'Software\\\\MyApp' 'OtherValue' '4'
   ")
SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "
  DeleteRegKey HKLM 'Software\\\\MyApp' 
 ")

【讨论】:

以上是关于如何使用 CPACK_PACKAGE_INSTALL_REGISTRY_KEY 添加注册表项?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用本机反应创建登录以及如何验证会话

如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]

如何使用 AngularJS 的 ng-model 创建一个数组以及如何使用 jquery 提交?

如何使用laravel保存所有行数据每个行名或相等

如何使用 Math.Net 连接矩阵。如何使用 Math.Net 调用特定的行或列?

WSARecv 如何使用 lpOverlapped?如何手动发出事件信号?