Как я могу разделить фрагмент Wix в два проекта Wix?
Вопрос
У нас есть фрагмент WIX в файле somedialog.wxs, который предлагает пользователю некоторую информацию. Он упоминается в другом фрагменте в файле Installerui.WXS, который контролирует порядок диалога. Конечно, Product.wxs - наш основной файл. Прекрасно работает.
Теперь у меня есть второй проект Visual Studio 2008 Wix 3.0 для .msi другого приложения, и ему необходимо попросить пользователя одной и той же информации. Я не могу понять лучший способ поделиться файлом, так что изменение запрошенной информации приведет к тому, что в обоих .ms получает новое поведение.
Я, честно говоря, не могу сказать, является ли модуль слияния, .wsi (включает) или .Wixlib - правильное решение. Я бы надеялся найти простой пример того, что кто-то делает это, но я потерпел неудачу до настоящего времени.
Редактировать:На основе Роб Мансхинг wixlib запись в блоге, Wixlib может быть ответом, но я все еще ищу пример того, как это сделать.
Решение
Я очень доволен вариантом .Wixlib. Мне потребовалось всего несколько минут, когда я понял, что был. Хикслиб.
Я сделал следующее: в VS2008, добавьте новый проект ... типа «Библиотека типа» с именем SQLDialog. Файл библиотеки .wxs создан с пустым <Fragment></Fragment>
элемент. Я скопировал элемент пользовательского интерфейса из моего существующего диалога (в моем главном «проекте Wix») в фрагментный элемент:
<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, вместо этого.
Когда я перекомпилировал решение, главный проект Wix работал точно так же, как и раньше !! Милая!
Затем я ссылался на проект SQLDialog Wixlib из моего другого проекта Wix и использовал его оттуда. Работал отлично! Сервер сборки счастлив, потому что проект Shared .Wixlib является частью решения, которое он компилизируется. Итак, для наших целей я думаю, что это было лучше, чем «общий» каталог. Нет обиды Боба. Я ценю ваши мысли.
Другие советы
Если это всего лишь один файл, .wixlib может быть переплетением, поскольку это требует другого .wixproj, чтобы построить его. Что я делаю в таких случаях, как это помещает .wxs в каталоге «Общий» и добавьте его в несколько проектов, используя раскрывающуюся ошибка «Добавить ссылку» в команде «Добавить существующий элемент».