У меня есть общая dll, мы назовем ее Utility.dll, которая устанавливается несколькими продуктами. В моем файле WIX я устанавливаю Utility.dll как отдельный компонент. Теперь версия 2.0 Utility.dll ссылается на дополнительную dll, UtilityUtility.dll, которая должна быть установлена вместе с ней.
Для моей первой попытки интеграции UtilityUtility.dll я создал новый компонент WIX, содержащий новую dll.
Это вызывает проблемы в следующем сценарии
1) Пользователь устанавливает продукт 1 {Utility.dll 1.0}
2) Пользователь устанавливает продукт 2 {Utility.dll 2.0, UtilityUtility.dll 2.0}
3) Пользователь удаляет продукт 2 {Utility.dll 2.0}
Теперь, когда пользователь использует Utility.dll, он не сможет найти ссылочную UtilityUtility.dll
Это привело меня к добавлению UtilityUtility.dll к исходному компоненту, который предотвращает удаление UtilityUtility.dll в предыдущем сценарии, но имеет собственную проблему.
1) Пользователь устанавливает продукт 1 {Utility.dll 1.0}
2) Пользователь устанавливает продукт 2 {Utility.dll 2.0, UtilityUtility.dll 2.0}
3) Пользователь удаляет продукт 2 {Utility.dll 2.0, UtilityUtility.dll 2.0}
4) Пользователь удаляет продукт 1 {UtilityUtility.dll 2.0}
UtilityUtility.dll осиротел, поскольку не удаляется при удалении Продукта 1 (он не существовал в компоненте при его первоначальной установке).
Есть ли у меня другие варианты здесь?
Спасибо