Добавление первого настраиваемого диалогового окна в WIX в среде VisualStudio

Я использую Visual Studio для сборки моего файла wix. Пока у меня есть один файл Product.wxs, и он работает для простой установки.

Теперь я хочу добавить некоторые настраиваемые диалоги. Я думаю, что из двух статей ниже я понимаю, как это сделать - после того, как я установил настройку своей среды:

http://blog.torresdal.net/2008/10/24/WiXAndDTFUsingACustomActionToListAvailableWebSitesOnIIS.aspx а также http://www.merlinia.com/mdt/WiXTutorial2.msl

Я загрузил источник, и я вижу 35 *.wxs файл в этом каталоге wix35-sources.zip\src\ext\UIExtension\wixlib

Вот где я начинаю заблудиться.

  • Мне нужно скопировать некоторые (только те, которые я хочу изменить) или все эти файлы в проект Visual Studio. До сих пор я не работал ни с одним из этих исходных файлов.

  • Как мои Product.wxs знают, как использовать эти файлы? Сначала он смотрит на локальный каталог? Или мне нужно перестроить некоторые С# -модули?

Я включил эти строки в свой Product.wxs, и он дал мне интерфейс пользователя во время выполнения:

    <UIRef Id="WixUI_Mondo" />
    <UIRef Id="WixUI_ErrorProgressText" />

Спасибо,

Нил

Ответ 1

Мне нужно скопировать некоторые (только те, которые я хочу изменить) или все эти файлы, чтобы мой проект VisualStudio. До сих пор я не работал ни с одним из этих исходных файлов.

Поскольку вы уже используете WixUI_Mondo, я предполагаю, что вы хотите настроить этот интерфейс. Найдите WixUI_Mondo.wxs в источниках wix и скопируйте их в проект визуальной студии. Переименуйте файл в WixUI_MyCustomUI.wxs и измените атрибут идентификатора пользовательского интерфейса внутри файла на Id="WixUI_MyCustomUI". Вам не нужно копировать другие файлы; диалоги, указанные в скопированной последовательности пользовательского интерфейса, скомпилированы в инструменты wix как ресурсы, поэтому wix "знает" эти диалоги по имени.

В файле product.wxs измените ссылку на пользовательский интерфейс на <UIRef Id="WixUI_MyCustomUI" />. Если вы сейчас перестроете свою настройку, пользовательский интерфейс должен выглядеть точно как WixUI_Mondo, поскольку мы еще ничего не настроили.

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

Как мой Product.wxs знает, как использовать эти файлы? Смотрит ли он на локальные сначала? Или мне нужно перестроить некоторые С# -модули?

У вас нет пересоздания любых С# -модулей. Единственная причина, по которой вы загрузили исходники wix, состоит в том, что существующие последовательности пользовательских интерфейсов и диалоги являются хорошими примерами для начала. В принципе вы также можете игнорировать источники wix и записывать эти файлы wxs для определения последовательности UI и диалогов с нуля.

Когда вы используете инструменты командной строки, вы объединяете несколько файлов wxs, просто передавая несколько аргументов файла, и они будут скомпилированы и связаны друг с другом. Если вы используете wix с визуальной студией, вам просто нужно добавить файл wxs в проект. Нетривиальная установка wix обычно определяется многими файлами wxs.

Содержимое файла wxs может содержать ссылки на элементы в других файлах wxs через такие элементы, как UIRef, ComponentRef, ComponentGroupRef, DirectoryRef и т.д.