如何将 NSIS 的 RequestExecutionLevel 选项添加到 CMakeLists.txt
Posted
技术标签:
【中文标题】如何将 NSIS 的 RequestExecutionLevel 选项添加到 CMakeLists.txt【英文标题】:How do I add the RequestExecutionLevel option of NSIS to a CMakeLists.txt 【发布时间】:2011-12-15 15:08:54 【问题描述】:我正在尝试让一个在 Windows 7 上使用 NSIS 编译的安装程序在没有管理员权限的情况下工作。该项目使用 CMake 设置并使用 VC2010 编译。我发现我必须使用
RequestExecutionLevel user
选项。我的问题是:我必须在我的 CMakeLists.txt 中添加什么才能将此选项传递给 NSIS?我找到了
set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "RequestExecutionLevel user")
在 google 的某个地方,但是这给出了一个错误,说这个选项不能在这个部分中设置。
非常感谢任何帮助
【问题讨论】:
我不知道 CMake,但在 NSIS 中,RequestExecutionLevel 是安装程序属性(在该部分中无效)。因此,您可以将它放在脚本中的任何位置,除了部分或函数。是这样吗? 【参考方案1】:我拥有的 CMake 版本在 NSIS 模板中有 @CPACK_NSIS_DEFINES@
,因此将 set(CPACK_NSIS_DEFINES "RequestExecutionLevel user")
添加到 CMakeLists.txt 也可以完成这项工作。
虽然it may require extra work for component based install.
【讨论】:
【参考方案2】:您可以尝试以下步骤:
将 NSIS.template.in 复制到您的项目目录,例如一个名为“包装”的子目录:
xcopy \cmake-install-path\modules\share\cmake-xxx\Modules\NSIS.template.in \your-project-directory\packaging\
将RequestExecutionLevel user
添加到 NSIS.template.in
更新 CMakeLists.txt 中的 CMAKE_MODULE_PATH:
list(APPEND CMAKE_MODULE_PATH $CMAKE_SOURCE_DIR/packaging)
然后重建你的包,看看它是否有效。
【讨论】:
以上是关于如何将 NSIS 的 RequestExecutionLevel 选项添加到 CMakeLists.txt的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 CPACK_NSIS_WELCOME_TITLE 和 CPACK_NSIS_FINISH_TITLE?