Как можно изменить сгенерированные CPack WiX XML с помощью файла патча? - PullRequest
0 голосов
/ 13 июня 2018

Я пытаюсь добавить функциональность для удаления предыдущей версии перед установкой новой версии определенного установщика.На странице документации CPackWIX (https://cmake.org/cmake/help/v3.3/module/CPackWIX.html) не ясно, как использовать CPACK_WIX_PROPERTY_ PROPERTY или CPACK_WIX_PATCH_FILE для изменения сгенерированных CPack XML-файлов WiX. Предположим, что в XML-файлах, сгенерированных CPack, не существует следующего.Есть ли способ добавить к ним следующее с помощью файла исправления?

<InstallExecuteSequence>
    <RemoveExistingProducts Before='InstallFinalize' />
</InstallExecuteSequence>

В документации показано, как можно добавить элемент среды к компоненту. Есть ли способ сделать это, расширяя эту логику выше?

1 Ответ

0 голосов
/ 19 декабря 2018

У меня была та же проблема, что и у вас (удаление предыдущей версии пакета), и у меня были некоторые проблемы при попытке использовать CPACK_WIX_PATCH_FILE, поэтому я подумал о другом решении: использовать макрос CPACK_WIX_TEMPLATE и настроить его так, чтобы он указывал на измененную версию шаблона по умолчанию.

Шаблон по умолчанию можно найти здесь: https://github.com/Kitware/CMake/blob/master/Modules/WIX.template.in

Я знаю, что он не идеален, поскольку этот файл может измениться после обновления CMake.

Но интересно то, что я понял, добавив«RemoveExistingProducts» не работало, потому что это уже было обработано в файле шаблона по умолчанию (как часть MajorUpgrade).

Реальная проблема для меня заключалась в том, что CPACK_WIX_UPGRADE_GUID никогда не был установлен в нашем проекте, поэтому CMake всегда генерировал новый (было хорошее предупреждение, что все игнорировали), и в результате все установщики выглядят так, как будто они ссылаются на другое приложение.

После установки CPACK_WIX_UPGRADE_GUID установка предыдущих версий автоматически удаляет старыепакеты.

Но это не работает с пакетами, в которых еще не установлен CPACK_WIX_UPGRADE_GUID.

...