Это должно быть общей потребность еще я считаю, вряд ли есть ссылки на нее в Интернете ...WiX и общие, Версионированные компоненты
У меня есть продукт, который имеет три набора компонентов, один установлены на сервер, один на веб-сервере и один на машине разработчика. Все три комплекта могут быть установлены на одной машине и должны мирно сосуществовать.
Как и вчера, каждый компонент устанавливался в другое место и работал нормально, но это было просто временно, поскольку некоторые файлы, сборки gac'd и настройки реестра должны быть разделены. Теперь я создал модуль слияния из разделяемых компонентов, и этот новый сценарий слияния работает нормально во время установки в идеальных условиях, и у меня есть основные обновления одного msi, которые все выяснили.
Проблема возникает во время установки msi, когда версия модуля слияния в установочном msi ниже, чем версия уже установленной версии (другой msi) - более новая версия перезаписывается более старой версией! Кроме того, при установке без установки любого из трех msis общий материал удаляется, даже если он все еще используется другими установленными компонентами.
По большей части я понимаю, почему я получаю такое поведение, но я не понимаю, как я должен настраивать своих установщиков, чтобы эти компоненты могли совместно использоваться БЕЗ отдельного установщика для общих компонентов , Кроме того, мне тоже не нужен один большой установщик - это не будет хорошо масштабироваться.
Я хочу, чтобы три установщика содержали любую последнюю версию компонентов в модуле слияния, доступную во время сборки. Во время установки, если установлена более новая версия общих компонентов, не перезаписывайте их. При удалении (и обновлении) время отсчета ссылок, которое должно было отслеживаться, будет определять, должны ли удаляться общие элементы.
В случае, если я просто что-то упустил, вот важные части файла слияния: номер версии моего модуля слияния (y в «wxy») увеличивается с каждой сборкой, идентификатор пакета остается фиксированным, и каждый компонент имеет Shared="yes"
(хотя я тоже пробовал это без этого).
Я начал хранить различные номера версий в реестре, и я подумал, что я мог бы условно установить функцию слияния только в том случае, если номер версии в реестре отсутствует или ниже. Но условные аргументы не могут правильно оценить w.x.y.z, как говорится в документации. В документации затем предлагается AppSearch, но AppSearch RegistrySearch может проверять наличие, а не сравнение номера версий. По-видимому, FileSearch может, но номера версий файла сборки не будут увеличиваться с каждой сборкой.
И я читал, что у MergeModules много проблем - возможно, это они, но wixlibs, похоже, не предлагают никаких решений для этих проблем.
Так что же такое правильный способ выполнения слияния модулей? Я нашел книгу, в которой есть запись TOC, называемая версией слияния модулей на Amazon, но книга не печатается. :-P
Я предлагаю перекрестную проводку этот вопрос к Wix списке рассылки. – saschabeaumont
@JasonKleban вы помните, когда-либо находили решение этого? У меня такая же проблема, и я не могу найти хорошую информацию. – tjernigan