Мне нужен совет о том, как очистить старый проект Wix, который не очень хорошо управлялся. Одна из проблем заключается в том, что в настоящее время проект имеет несколько записей для одних и тех же файлов, расположенных в одном месте. Например, несколько файлов .wxs в проекте будут определять новый компонент для foo.exe, каждый из которых использует другой GUID, и каждый отправляет этот файл в тот же каталог. Это еще не создало никаких проблем, но теперь я хочу использовать патчи (MSP) в нашем продукте и подобные вещи с их работой.Очистка дубликатов записей в установщике Wix
Мне интересно, как лучше решить этот вопрос, не нарушая апгрейды (так как все предыдущие инсталляторы вышли вот так). Если я просто удалю все повторяющиеся компоненты, во время обновления мы получим неопределенное поведение. Я думаю, что происходит то, что удаление одной или нескольких повторяющихся записей заставит установщик генерировать операции удаления для этого файла. Даже если оставшаяся запись для файла является новой версией, в порядке операций во время установки нет гарантии. Поэтому некоторые из этих файлов будут сначала обновлены, затем одна или несколько операций удаления удалят обновленный файл. Таким образом, в конце обновления будет отсутствовать несколько файлов. После этого ремонт сразу же восстановит файлы, так как установщик знает, что они должны быть там.
Я предполагаю, что один из способов решить эту проблему - это сделать «взломанный» в нашем следующем выпуске, где мы скопируем эти файлы во вторичное место, а затем запустим специальную установку post post, которая копирует файлы из вторичного местоположения в первичный и удалить временный каталог.
Есть ли более чистый способ, которым это может быть разрешено?