В настоящее время я изучаю капризы установщика WiX и Windows и наткнулся на камень преткновения.
Проект, который я сейчас упаковываю, состоит из шести отдельных кусков. А пока давайте назовем их A, B, C, D, E и F.
Chunk A - это набор общих библиотек и утилит, которые используются в любом другом проекте. Это не представляет никакой функциональности конечного пользователя.
Chunk B - это еще один набор общих библиотек и утилит, которым требуется функциональность, предоставляемая Chunk A. Это кажется странным, но архитектура находится за пределами моей способности влиять или контролировать.
Chunk C - это третий набор общих библиотек и утилит, которым требуется функциональность, предоставляемая блоками A и B. Это кажется еще более странным, чем раньше, но я все еще не могу изменить это.
Для блоков D, E и F требуется функциональность, предоставляемая фрагментами A, B и C.
Если возможно, я хотел бы убедиться, что есть только одна установка блоков A, B и C, которые совместно используются для установок D, E и F. Мне дали гарантию, что блоки A , B и C сохранят стабильные API, чтобы их можно было обновлять, не нарушая функциональность D, E или F.
Моя непосредственная мысль - создать модули слияния для компонентов в A, B и C, а затем ссылаться на них в функциях, предоставляемых отдельными установщиками для D, E и F. Это приведет к тому, что установщики будут раздуты, но это будет гарантировать, что необходимые компоненты установлены. К сожалению, я боюсь, что это вызовет проблемы при проверке установщика Windows при обновлении.
Еще одна мысль, которая у меня возникла, состояла в том, чтобы создать единый установщик для A, B и C и потребовать его в установщиках для D, E и F через поиск компонентов.
Имеет ли какая-либо идея смысл? Если ни одна из идей не имеет смысла, есть ли у вас какие-либо рекомендации относительно правильного способа сделать это?