Добавление настраиваемых необходимых компонентов
Обновлен: Ноябрь 2007
Загрузчик является универсальным установщиком, который можно настроить для загрузки практически любого распространяемого пакета, который может быть упакован в файл установщика Windows или в исполняемый файл. Он настраивается при помощи набора простых XML-манифестов, которые определяют все метаданные, необходимые загрузчику для управления установкой компонента. Загрузчик не предъявляет требований к используемой технологии установки приложения (Windows Installer или ClickOnce).
При запуске файла setup.exe пользователем, в первую очередь он проверяет все ли необходимые компоненты уже установлены. Если какой-либо из необходимых компонентов отсутствует, загрузчик отображает диалоговое окно "Установка", перечисляющее эти компоненты и отображающее их лицензионные соглашения. В противном случае (если обнаружены все необходимые компоненты) загрузчик просто запускает установщик приложения.
Как только пользователь принимает условия соглашения, начинается процесс загрузки и установки. После того, как все необходимые компоненты будут установлены, загрузчик начинает процесс установки самого приложения.
Создание настраиваемых пакетов
В некоторых случаях нет необходимости создавать пакет для распространяемого пакета. Обычно, построение требуется выполнять для общих или системных компонентов, которым необходимо выполнить установку в глобальный кэш сборок, глобальную регистрацию или запустить службы Windows.
Возможность поставки распространяемого пакета вместе с приложением необходимо уточнить у разработчика элемента управления. Если простого копирования достаточно для распространения необходимого компонента (например, если у него отсутствуют зависимости), создавать пакет необязательно. Просто убедитесь, что файл включен в установку или что он имеет значение Copy Local. (Свойству файла Copy в Просмотре свойств должно быть присвоено значение True).
Также следует определить, нужно ли использовать установщик. Если да, то используйте пакет установщика.
Чтобы создать новый пакет компонента, необходимо указать:
Распространяемый компонент в виде файла EXE или MSI.
Манифест продукта Product.xml, который содержит все метаданные пакета, не зависящие от языка. Содержит метаданные, общие для всех локализованных версий распространяемого компонента.
Манифест пакета Package.xml, содержащий метаданные для конкретного языка; обычно он содержит локализованные сообщения об ошибках. Компонент должен иметь по крайней мере один манифест пакета для каждой локализованной версии этого компонента.
Необходимо создать файлы манифеста вручную, и метаданные, которые они содержат, должны соответствовать определенной схеме, описанной в Элементах схемы пакета, включенных в SDK (пакет средств разработки программного обеспечения) для Windows. Справку по схеме см. в разделе Справочные сведения о схеме пакетов и продуктов. Программа построения установки, интегрированная с Visual Studio, выполняет проверку файлов манифеста во время сборки.
Необходимо указать зависимости между пакетами в этих манифестах с помощью элемента схемы DependsOnProduct.
Затем необходимо скопировать файлы манифеста продукта и пакета, а также файлы распространяемого пакета, в специальную папку, зарезервированную Visual Studio для распространяемых пакетов:
\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages
Чтобы написать установщик, копирующий распространяемый компонент и его манифест в эту папку, можно программными средствами определить расположение папки установщика из значения Path в следующем разделе реестра:
HKLM\Software\Microsoft\GenericBootstrapper\3.5
Каждый распространяемый компонент появляется в своей собственной вложенной папке в каталоге пакетов. Файлы манифеста продукта и распространяемые файлы затем помещаются в эту папку. Локализованные версии компонента вместе с манифестом пакета помещаются в подпапки в соответствии с именем языка и региональных параметров (см. таблицу в разделе CultureInfo).
После копирования файлов в папку установщика, они автоматически отображаются в диалоговом окне необходимых компонентов Visual Studio, в котором разработчик может выбрать их, установив соответствующий флажок.
Дополнительные сведения об использовании загрузчика для настройки установки см. в статье MSDN Use the Visual Studio 2005 Bootstrapper to Kick-Start Your Installation (на английском языке).
Сохранение распространяемых пакетов установщика отдельно от установок приложений.
Как правило, следует хранить любые компоненты, которые являются частью распространяемого пакета загрузчика, отдельно из приложений, использующих эти компоненты. Например, предположим, что есть пакет загрузчика с именем Acme.DataWidgets.msi, содержащий компонент Acme.DataWidgets.dll. Acme.DataWidgets.dll не должен находиться в каталоге проекта bindir во время разработки и не должен развертываться в пакете установки приложения.
Таким образом, Корпорация Майкрософт рекомендует устанавливать компоненты загрузчика в глобальный кэш сборок на компьютере разработки по возможности с помощью того же самого основного установщика распространяемого пакета загрузчика. Это предотвратит копирование компонентов загрузчика в каталог проекта bindir во время разработки. Кроме того Корпорация Майкрософт рекомендует определить файл RedistList для описания всех сборок, которые являются частью распространяемого пакета загрузчика. Это предотвратит включение компонентов загрузчика в любые проекты развертывания приложения. Файл RedistList необходимо установить только на компьютер разработчика.
Для этого создайте список распространяемых пакетов в папке RedistList каталога .NET Framework (\WINDOWS\Microsoft.NET\Framework).
Список распространяемых пакетов является XML-файл, которому следует присвоить имя в следующем формате: НазваниеКомпании + ИмяКомпонента + RedistList.xml. Поэтому если компонент называется "Datawidgets", разработан компанией "Acme", необходимо использовать имя Acme.DataWidgets.RedistList.xml. Пример содержимого списка распространяемых пакетов:
<?xml version="1.0" encoding="UTF-8"?>
<FileList Redist="Acme.DataWidgets" >
<File AssemblyName="Acme.DataGrid" Version="1.0.0.0" PublicKeyToken="b03f5f7f11d50a3a" Culture="neutral" ProcessorArchitecture="MSIL" InGAC="true" />
</FileList>
Добавление пакетов в диалоговом окне "Необходимые компоненты"
Диалоговое окно "Необходимые компоненты" позволяет выбрать, какие компоненты необходимы приложению, перед установкой. Visual Studio содержит несколько стандартных необходимых компонентов. Однако в качестве необходимых можно добавить и другие компоненты Microsoft или сторонних производителей. Для этого необходимо разработать манифесты продукта и пакета, как описано выше.
В диалоговом окне Необходимые компоненты список Устанавливаемые необходимые компоненты отображает необходимые пакеты, которые могут быть установлены. Последовательность пакетов в этом списке основана на зависимостях, указанных в манифесте, и задает порядок, в котором будут установлены пакеты.
После добавления обычного пакета к загрузчику, этот пакет появится в диалоговом окне Необходимые компоненты как MyPackage. Visual Studio не будет автоматически выбирать пакеты для установки.
Для проектов ClickOnce Visual Studio рекомендует включать .NET Framework во все типы проектов, устанавливая по умолчанию флажок .NET Framework в списке Устанавливаемые необходимые компоненты.
По умолчанию для проектов установщика Windows, флажок .NET Framework уже установлен, если текущий проект является проектом установки или веб-установки. Если во время построения ни пакет .NET Framework, ни пакет установщика Windows не будут выбраны, то будет выдано предупреждение построения.
См. также
Задачи
Практическое руководство. Установка необходимых компонентов при помощи ClickOnce-приложения
Основные понятия
Развертывание необходимых компонентов (Visual Studio)
Ссылки
Диалоговое окно "Необходимые компоненты"
Справочные сведения о схеме пакетов и продуктов
Другие ресурсы
https://msdn.microsoft.com/msdnmag/issues/04/10/Bootstrapper/