Как настроить файл WiX для разных клиентов - PullRequest
3 голосов
/ 14 февраля 2012

У меня есть один пользовательский файл , добавленный в мой проект WiX , например:

<Component Id="IMPORT" DiskId="1" Guid="xxxxx">
  <File Id="IMPORT" Name="Import.xml" Source="..\..\config_customerA\Import.xml"/>
</Component>

Остальная часть файла одинакова для всех клиентов.

Сейчас у меня есть один проект Wix для каждого клиента. Файл Wix проекта все тот же, только вышеперечисленные строки меняются по желанию заказчика Мне не нравятся эти решения из-за всей избыточности и дублирования (принцип DRY ...).

Как вы решаете эту дилемму?

Было бы неплохо использовать один файл Wix и изменить только ссылку на конкретный файл клиента.

Ответы [ 2 ]

4 голосов
/ 14 февраля 2012

Три возможных подхода ...

1) Сделать это проблемой сборки, а не установщиком. Оставьте WXS в покое и при автоматизации MSI скопируйте правильный XML-файл в область действия при сборке MSI.

2) абстрагируйте путь к файлу XML с помощью оператора препроцессора и передайте путь в сборку, чтобы WXS динамически указывал на разные файлы XML во время сборки.

3) Определите «что» отличается от XML и используйте возможность XML Changes для преобразования базового XML в специфический для клиента XML во время установки. Например, предположим, что XML-файл отличается, за исключением того, что некоторая пара ключ / значение имеет значение с именем заказчика. Используйте оператор пропроцессора, чтобы определить переменную для имени клиента и передать имя клиента в сборку. Используйте оператор препроцессора, чтобы свойство получало имя клиента. Затем используйте свойство в элементе XmlConfig, чтобы применить имя клиента к атрибуту значения ключа в файле XML.

1 голос
/ 14 февраля 2012

Один из возможных подходов - упаковать ваш XML-файл как «свободный» (не во встроенный в MSI).Вам понадобится отдельный элемент Media и ссылка на него будет DiskId на элементе File.Затем у вас есть один MSI-файл, который ссылается на внешний файл, так что вы можете изменять XML-файл для каждого клиента.

Я сделал это в одном из моих проектов, и это работает.Работает ли это для вас, зависит от ваших требований.Одним из недостатков является то, что это не очень удобно для загрузки, так как теперь у вас есть два файла вместо одного MSI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...