Как поделиться фрагментом WiX в двух проектах WiX?

У нас есть фрагмент WiX в файле SomeDialog.wxs, который запрашивает у пользователя некоторую информацию. На него есть ссылка в другом фрагменте файла InstallerUI.wxs, который управляет порядком диалогов. Конечно, Product.wxs - это наш основной файл. Работает отлично.

Теперь у меня есть второй проект Visual Studio 2008 Wix 3.0 для MSI другого приложения, и он должен запросить у пользователя ту же информацию. Кажется, я не могу найти лучший способ поделиться файлом, чтобы изменение запрошенной информации привело к тому, что оба MSI-файла получили новое поведение.

Я, честно говоря, не могу сказать, является ли модуль слияния,.wsi (include) или.wixlib правильным решением. Я бы надеялся найти простой пример того, как кто-то делает это, но пока мне не удалось.

Редактировать: Основываясь на записи блога wixlib Rob Mensching Меншинга, ответ может быть wixlib, но я все еще ищу пример того, как это сделать.

2 ответа

Решение

Я вполне доволен опцией.wixlib. Мне потребовалось всего несколько минут, чтобы понять, что такое.wixlib.
Я сделал следующее: В VS2008 Add->New Project... типа "Проект библиотеки WiX" с именем SQLDialog. Файл библиотеки.wxs создается с пустым <Fragment></Fragment> элемент. Я скопировал элемент пользовательского интерфейса из моего существующего диалога (в моем главном "проекте WiX") в элемент Fragment:

<Fragment>
  <UI>
    <Dialog Id="SQLServerPromptingDlg" ... Title="SQL Server Information" ...>
      <Control Id="Next" Type="PushButton" ... Text="!(loc.WixUINext)" />
      ...
    </Dialog>
  </UI>
</Fragment>

Я добавил проект wixlib в конфигурацию выпуска сборки в VS2008. Я удалил файл SQLDialog.wxs из основного проекта WiX и вместо этого сослался на проект SQLDialog wixlib.
Когда я перекомпилировал решение, проект Main WiX работал точно так же, как и раньше! Милая!

Затем я ссылался на проект wixlib SQLDialog из моего другого проекта WiX и использовал его оттуда. Работал отлично! Сервер сборки счастлив, потому что общий проект.wixlib является частью решения, которое он компилирует. Так что для наших целей я думаю, что это лучше, чем "общий" каталог. Без обид Боб. Я ценю ваши мысли.

Если это всего лишь один файл, файл.wixlib может быть излишним, так как для его сборки требуется другой.wixproj. В таких случаях я помещаю.wxs в "общий" каталог и добавляю его в несколько проектов, используя выпадающий список "добавить ссылку" в команде "добавить существующий элемент".

Другие вопросы по тегам