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