Как поделиться фрагментом WiX в двух проектах WiX? - PullRequest
4 голосов
/ 05 мая 2010

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

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

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

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

Ответы [ 2 ]

6 голосов
/ 11 мая 2010

Я очень доволен опцией .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 в конфигурацию Release Build в VS2008. Я удалил файл SQLDialog.wxs из основного проекта WiX и вместо этого ссылался на проект SQLDialog wixlib.
Когда я перекомпилировал решение, проект Main WiX работал точно так же, как и раньше! Классно!

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

1 голос
/ 06 мая 2010

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

...