Как передать значение свойства в cpack-wix без повторного запуска cmake?

Я использую cmake и cpack и wix для создания и развертывания моего проекта. У установщика есть некоторые свойства, которые пользователь может ввести через графический интерфейс или параметры командной строки MSI. Я установил значения свойств по умолчанию в моем CMakeLists.txt, используя:

set(CPACK_WIX_PROPERTY_<PROPERTY> <value>)

Проблема в том, что если я изменю эти значения, я должен перезапустить команду cmake перед командой cpack.

Я ищу способ изменить значение этих свойств по умолчанию без необходимости повторного запуска cmake.

Я попытался добавить дополнительные файлы wxs с помощью CPACK_WIX_EXTRA_SOURCES или исправить сгенерированные файлы дополнительными файлами xml с помощью CPACK_WIX_PATCH_FILE, но не смог найти правильный код для добавления файлов wxs или xml для достижения моей цели.

Я попробовал команду SetProperty и обнаружил, что ее поведение нелегко контролировать, я сдался, когда увидел, что предоставленные пользователем значения не заменяют исходные значения, и предложил решение по адресу http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Unable-to-override-SetProperty-value-with-Edit-Control-value-td7591569.html не работает. Я надеюсь, что есть простой способ, но даже сложный ответ с использованием SetProperty подойдет.


person Null    schedule 07.06.2020    source источник
comment
Спасибо @Tsyvarev, ваше решение работает именно так, как ожидалось. Не могли бы вы написать это как ответ?   -  person Null    schedule 08.06.2020


Ответы (1)


Я ищу способ изменить значение этих свойств по умолчанию без необходимости повторного запуска cmake.

Сценарий, указанный в переменной CPACK_PROJECT_CONFIG_FILE, что влияет на CPack, но изменение которого не требует повторного запуска cmake. Таким образом, вы можете разместить настройку CPACK_WIX_PROPERTY_<PROPERTY> здесь: изменение этой настройки потребует только повторного запуска CPack без повторного запуска cmake в основном проекте.


Кроме того, когда скрипт, указанный в переменной CPACK_PROJECT_CONFIG_FILE, анализируется, переменная CPACK_GENERATOR содержит точный генератор CPack, который обрабатывается в данный момент. Это противоположно поведению переменной внутри CMakeLists.txt, когда она содержит список генераторов.

person Tsyvarev    schedule 07.06.2020