如何在不需要 运行 cmake 的情况下将 属性 值摄取到 cpack-wix?

How to ingest property value to cpack-wix without nees for running cmake again?

我正在使用 cmakecpack 以及 wix 来构建和部署我的项目。安装程序具有一些用户可以通过 GUI 或 MSI 命令行选项输入的属性。 我在我的 CMakeLists.txt 中设置默认 属性 值使用:

set(CPACK_WIX_PROPERTY_<PROPERTY> <value>)

问题是,如果我更改这些值,我应该在 cpack 命令之前重新运行 cmake 命令。

我正在寻找一种无需重新运行即可更改这些属性的默认值的方法 cmake

我尝试使用 CPACK_WIX_EXTRA_SOURCES 添加额外的 wxs 文件或使用 CPACK_WIX_PATCH_FILE 使用额外的 xml 文件修补生成的文件,但找不到正确的代码来放置在 wxsxml 文件中完成我的目标。

我尝试了 SetProperty 命令,发现它的行为不容易控制,当我看到用户提供的值不替换初始值和建议的解决方案时,我放弃了 http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Unable-to-override-SetProperty-value-with-Edit-Control-value-td7591569.html 没用。我希望有一个简单的方法,但即使是使用 SetProperty 的复杂答案也可以。

I am looking for a way to change default value of these properties without need for rerunning cmake.

CPACK_PROJECT_CONFIG_FILE 变量中指定的脚本是影响 CPack 的脚本,但更改不需要 cmake 重新 运行。因此,您可以在此处放置 CPACK_WIX_PROPERTY_<PROPERTY> 的设置:更改此设置只需要在主项目上重新 运行 CPack 而无需重新 运行 cmake


此外,当解析 CPACK_PROJECT_CONFIG_FILE 变量中指定的脚本时,CPACK_GENERATOR 变量包含当前正在处理的确切 CPack 生成器。这与 CMakeLists.txt 中变量的行为相反,当它包含 list 生成器时。