понедельник, 31 мая 2010 г.

Стандартный Bootstrapper для WiX

Оригинал

Приложения, написанные на .NET Framework, зачастую требуют установки фреймворка как часть установочного процесса. Из-за зависимостей в установке .NET Framework его невозможно включить напрямую в установочный пакет приложения. Вместо этого можно использовать приложение для предварительной загрузки (bootstrapper). Это приложение сначала установит .NET Framework, затем запустит установку вашего приложения.
WiX не имеет собственного приложения-обертки, однако можно использовать приложением, поставляемым вместе с Visual Studio. Данная статья описывает, как изменить файл проекта WiX для создания приложения с предварительной установкой .NET Framework и Windows Installer 3.1. Аналогичные шаги необходимо выполнить для предварительной установки других приложений, таких как SQL Server Compact Edition или Visual Studio Tools для Office.

Шаг 1. Откройте ваш WiX проект для редактирования
Для редактирования файла-проекта в Visual Studio
Откройте проект в Visual Studio
В окне Solution Explorer в контекстном меню (правая кнопка мышки) проекта выберите пункт Unload project
В окне Solution Explorer в контекстном меню выберите Edit

Шаг 2. Добавление элементов для предварительной установки
В любом месте файла-проекта в секции вставьте

<ItemGroup>
<BootstrapperFile Include="Microsoft.Net.Framework.3.5">
<ProductName>.NET Framework 3.5</ProductName>
</BootstrapperFile>
<BootstrapperFile Include="Microsoft.Windows.Installer.3.1">
<ProductName>Windows Installer 3.1</ProductName>
</BootstrapperFile>
</ItemGroup>
Эти элементы будут использоваться в следующем шаге для того чтобы при создании приложения-обертки указать включаемые пакеты. В данном случае выбраны пакеты .NET Framework 3.5 and Windows Installer 3.1.

Шаг 3. Добавление задачи генерации приложения-обертки
В файле проекта WiX уберите комментарии комментируйте из блока <TargetName="AfterBuild"></Target> и замените его на

<Target Name="AfterBuild">
<GenerateBootstrapper ApplicationFile="$(TargetFileName)"
ApplicationName="My Application Name"
BootstrapperItems="@(BootstrapperFile)"
ComponentsLocation="Relative"
CopyComponents="True"
OutputPath="$(OutputPath)"
Path="C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\"/>
</Target>
Эта запись будет указывать MSBuild на генерацию приложения-обертки после успешной сборки проекта WiX. Атрибут ApplicationFile будет заменено на путь к установочному пакету после его сборки. ApplicationName будет указывать на имя приложения, которое будет показано в программе установки. Атрибут BootstrapperItems указывает на директорию с установочными пакетами, указанными в шаге 2. При значении атрибута ComponentsLocation равным Relative, пакеты для предварительной установки для инсталляции будут использовать пути относительно размещения основного пакета. Атрибут CopyComponents при значении true указывает на то, что необходимо скопировать компоненты для предварительной установки в директорию основного пакета. OutputPath показывает исходящую директорию для сборки приложения-обертки.
Атрибут Path указывает на расположение установочных пакетов на вашем компьютере. Для Visual Studio 2005 это будет C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages, для Visual Studio 2008 C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper

Шаг 4.
Соберите проект
Для этого в контекстном меню проекта выберите Reload project.
Соберите проект
После завершения сборки приложение для предварительной установки будет помещено рядом с установочным пакетом основного приложения.

Установка других пакетов
Другие пакеты могут быть включены описанным выше методом, необходимо только внести изменения в шаг 2. Более простым способом для настройки необходимых компонентов и включении их в установочный процесс является использование Bootstrapper Manifest Generator. Сохраненный файл этого приложения можно включить как текст в соответствующие записи проекта. Bootstrapper Manifest Geneator может использоваться также для создания собственных пакетов предварительной установки включаемые в приложение-обертку ClickOnce.