У меня была та же проблема, что и у вас (удаление предыдущей версии пакета), и у меня были некоторые проблемы при попытке использовать 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.