Во-первых, давайте установим некоторые базовые знания...
Проекты WiX — это проекты Visual Studio. Проекты Visual Studio — это проекты MSBuild. Проекты MSBuild представляют собой XML-файлы. Как правило, проект MSBuild импортирует другие проекты MSBuild в виде библиотек (с расширением .targets), поскольку большая часть информации, необходимой для сборки проекта, является общей для всех проектов одного типа (например, .csproj). Проекты MSBuild можно создавать с помощью msbuild.exe, который входит в состав .NET Framework. Проекты MSBuild в конечном итоге выполняют задачи по сборке проекта. Задачи обычно представляют собой вызовы инструментов командной строки или, если они доступны, эквивалентный вызов функции библиотеки.
Для использования исходных файлов WiX вызываются WiX-scandle.exe и light.exe. Чтобы сгенерировать некоторые исходные файлы WiX, можно вызвать WiX'sheat.exe.
WiX предоставляет задачи MSBuild, чтобы сделать это за вас. Он также предоставляет шаблоны проектов MSBuild, которые импортируют эти задачи. Обычно вы используете IDE, например Visual Studio (не экспресс) или SharpDevelop (бесплатно) для преобразования шаблона проекта в проект. Но вы можете написать файл проекта вручную, обратившись к примеру. Опять же, такие проекты можно построить, вызвав msbuild.exe, или среда IDE может вызвать MSBuild вместо вас.
С помощью IDE удобно редактировать как исходные файлы WiX, так и проекты. Файл проекта можно редактировать с помощью конструктора проектов IDE или редактора XML. (В обозревателе решений VS выполните выгрузку проекта, а затем редактирование проекта.) Поскольку и исходные файлы, и проекты представляют собой XML, среда IDE должна предоставлять помощь на основе схемы XML файла.
Многие типы проектов (например, .csproj и .wixproj) позволяют проекту ссылаться на другие. Назначение и функция ссылки на проект зависят от импорта MSBuild для проекта. Вы, вероятно, знакомы со ссылкой на проект C# в проекте C#. Как минимум, можно было бы ожидать, что проект, на который ссылаются, создается до проекта, на который ссылается.
Проект WiX может ссылаться на проекты .NET (например, .csproj) или другие проекты WiX. Для каждой ссылки на проект WiX определяет некоторые полезные переменные на основе имени упоминаемый проект. Например: если у вас есть проект загрузчика WiX, он может ссылаться на проект установки WiX с именем SetupProject1
, поэтому var.SetupProject1.TargetPath
будет определен для использования в исходном коде загрузчика. Другой пример: если у вас есть проект установки WiX, он может ссылаться на проект C# с именем ConsoleApplication1
, поэтому будет определено var.ConsoleApplication1.TargetPath
. В обоих примерах целевой путь, скорее всего, зависит от конфигурации проекта (например, отладка, выпуск). WiX указывает переменным соответствующий путь, определенный в указанном проекте на основе конфигурации.
Нижняя линия
- Элемент Product используется в проекте настройки WiX; Элемент Bundle используется в проекте WiX Bootstrapper. (Если вы не используете файлы проекта, вы должны вызвать инструменты командной строки WiX один раз для продукта и один раз для пакета).
- Для элемента пакета SourceFile должен быть путем к соответствующему файлу msi или exe. Это может быть путь или переменная, определенная в командной строке Candle.exe или через ссылку на проект.
- Вероятно, вы упускаете из виду удобство использования проектов WiX и MSBuild. Как и во всех проектах Visual Studio, вы можете не использовать IDE или выбрать бесплатную или платную IDE. Предположительно, вы уже используете IDE и MSBuild для своих проектов C#. Их использование для проекта WiX мало чем отличается от добавления проекта VB.NET в ваше решение.
Вам следует рассмотреть проект установки WiX, который ссылается на ваши проекты C#, и проект загрузчика WiX, который ссылается на ваш проект установки WiX. Создайте решение, и готово!
(Конечно, во время разработки вам могут не понадобиться проекты установки в вашем решении. В этом случае используйте несколько файлов решения.)
person
Tom Blodget
schedule
07.09.2013
$(var.SetupProject1.TargetPath)
. Я использую WiX с уже скомпилированными файлами, а не для проектов. - person Jonny Piazzi   schedule 06.09.2013