Проект WiX, позволяющий параллельную установку - PullRequest
15 голосов
/ 03 мая 2011

Я нахожусь в процессе создания MSI для нашего продукта. Я бы хотел, чтобы продукт мог устанавливать рядом . Так что я могу сначала установить 1.0.0, а потом добавить 1.0.1, чтобы обе версии были установлены.

Я использую WiX для создания MSI и хотел бы знать, как это можно и нужно делать в Wix? Например

  • Нужно ли создавать новые направляющие для всех компонентов ?
  • Как мне добавить информацию о версии в wix или я должен полностью переименовать свой продукт?
  • Как я могу создать проекты, чтобы выпуск новой версии требовал минимальных изменений в проекте wix ?

Привет, Мартейн

Ответы [ 2 ]

10 голосов
/ 03 мая 2011

Вы сможете обойтись без простого изменения кода продукта верхнего уровня и идентификаторов GUID UpgradeCode, чтобы сделать ваши два продукта полностью несвязанными, и использовать Productversion для определения версии.Вы можете обмениваться руководствами по компонентам между продуктами (именно так работают модули слияния), так что нет необходимости настраивать кишки вашего установщика (определения компонентов) и по-прежнему предоставлять общий доступ.

Ваша главная задача - обеспечитьдва развязанных продукта не мешают друг другу, например, при наличии одной и той же папки установки по умолчанию, пунктов меню «Пуск» и одной и той же записи «Установка и удаление программ».Вы можете достичь этого, включив номер версии продукта в Свойство ProductName, которое может выглядеть немного странным в вашем пользовательском интерфейсе установки, но не случайно.

0 голосов
/ 13 марта 2013

Относительно вашего первого вопроса: нет, вам не нужно.
Но почему?

У меня были трудности с пониманием правил установщика Windows в моем параллельном сценарии.Вы действительно должны понимать понятия правил компонентов (в том числе, когда вам нужно их тормозить) и путей к ключам .WiX не абстрагирует эти аспекты.

Этот ответ уже выделяет возможные помехи.Давайте рассмотрим несколько примеров.

  • GUID компонента с исполняемым файлом приложения изменять не нужно.Это нарушает правила компонентов, но работает, поскольку обе версии продукта определяют один и тот же компонент без помех.
  • Ресурс, совместно используемый обеими версиями, не поддерживается напрямую.Ярким примером является использование расширений файлов с использованием ProgID, как показано здесь .

    Если вы измените GUID (также происходит при использовании "*" GUID), расширение будет удалено при удалении любой версии.

    Если вы не измените GUID, расширениебудут сохранены, но указывают на версию, которая была установлена ​​совсем недавно.Вы можете использовать эту опцию как меньшую из двух дьяволов, поддерживая, по крайней мере, сценарий, когда пользователи удаляют версии в том же порядке, в котором они их установили.
    Здесь есть ловушка: расширение должно быть ключевым путемкомпонента.Это делает проблематичным использование элемента ProgID в параллельном сценарии, поскольку вы получите предупреждение ICE69 в случае, если вы не поместите элемент ProgID в тот же компонент, что и указанный файл.Более того, это деталь реализации WiX, в которой сгенерированная им запись реестра будет ключевым путем.

...