Мы используем wix для создания наших настроек. Для обновления мы используем основные обновления, как показано в этого ответа Роба Меншинга . (В более новых версиях wix вы можете использовать элемент MajorUpgrade .) Обычно это работает хорошо. Старый продукт удаляется, затем новый продукт устанавливается.
Однако, очевидно, что вышеупомянутое не полностью эквивалентно удалению старого продукта вручную и последующей установке нового продукта вручную.
Рассмотрим, например, следующий сценарий:
- Выпущена версия 1.0 нашего продукта, содержащая версию 5.0 третьей стороны dll
- Выпущена версия 1.1 нашего продукта, содержащая версию 5.1 той же третьей стороны DLL
- Выпущена версия 1.2 нашего продукта с понижением до версии 5.0 третьей стороны dll, поскольку мы обнаружили, что в новой версии было больше проблем, чем решено.
Очевидно, что с логикой обновления wix, связанной выше, 3-я библиотека DLL исчезнет при обновлении с версии 1.1 до 1.2. Для его восстановления необходим ремонт.
Есть ли другой способ обновления, который подойдет для этого сценария? Я думаю, что я ищу, это логика обновления, которая позволяет понизить версию компонентов, ведя себя точно так, как если бы вы вручную удаляли старый продукт, а затем вручную устанавливали новый продукт.