Поделиться через


Создание пакетов начального загрузчика

Программа установки — это общий установщик, который можно настроить на обнаружение и установку распространяемых компонентов, таких как файлы установщика Windows (.MSI) и исполняемые программы. Установщик также называется начальным загрузчиком. Он программируется с помощью набора XML манифестов, определяющих метаданные для управления установкой компонента. Каждый распространяемый компонент или предварительные требования, отображаемые в диалоговом окне "Предварительные требования" для ClickOnce, является пакетом начальной загрузки. Пакет начальной загрузки — это группа директорий и файлов, в которых содержатся файлы манифеста, описывающие порядок установки необходимого компонента.

Сначала начальный загрузчик проверяет, установлены ли необходимые компоненты. Если нет, то начальный загрузчик показывает лицензионные соглашения. Как только конечный пользователь примет условия лицензионного соглашения, начнется установка необходимых компонентов. Если все необходимые компоненты обнаружены, начальный загрузчик просто запустит установщик приложения.

Создание пользовательских пакетов начальной загрузки

Манифесты начального загрузчика можно создать с помощью редактора XML в Visual Studio. Чтобы просмотреть пример создания пакета начальной загрузки, см . пошаговое руководство. Создание настраиваемого загрузчика с помощью запроса конфиденциальности.

Чтобы создать пакет начальной загрузки, необходимо создать манифест продукта и для каждой локализованной версии компонента, манифест пакета.

  • Манифест продукта product, product.xml, содержит все метаданные, нейтральные на языке для пакета. Здесь находятся общие метаданные для всех локализованных версий распространяемого компонента. Сведения о создании этого файла см. в разделе "Практическое руководство. Создание манифеста продукта".

  • Манифест пакета package.xml содержит метаданные, относящиеся к языку. Обычно он содержит локализованные сообщения об ошибках. Компонент должен содержать хотя бы один манифест пакета для каждой локализованной версии. Сведения о создании этого файла см. в разделе "Практическое руководство. Создание манифеста пакета".

После создания этих файлов необходимо сохранить манифест продукта в папку с именем стандартного начального загрузчика. Файл манифеста пакета следует переместить в папку с именем языкового стандарта. Например, если манифест пакета создан для распространения на английском языке, то файл необходимо положить в папку с названием "en". Повторите эту процедуру для каждого языкового стандарта, например "ja" для японского языка и "de" для немецкого. Окончательный пользовательский пакет начального загрузчика может иметь следующую структуру папок.

CustomBootstrapperPackage
  product.xml
  CustomBootstrapper.msi
  de
    eula.rtf
    package.xml
  en
    eula.rtf
    package.xml
  ja
    eula.rtf
    package.xml

Затем скопируйте распространяемые файлы в папку начальной загрузки. Дополнительные сведения см. в разделе Практическое руководство. Создание локализованного пакета начального загрузчика.

*\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages*

or

*<VS Install Path>\MSBuild\Microsoft\VisualStudio\BootstrapperPackages*

Примечание.

Путь, указанный выше в пути установки Visual Studio, начинается с выпуска Visual Studio 2019 с обновлением 7.

Расположение папки начальной загрузки также можно найти в значении Path в следующем разделе реестра:

*HKLM\Software\Microsoft\GenericBootstrapper*

Для 64-разрядных операционных систем необходимо использовать следующий раздел реестра:

*HKLM\Software\Wow6432Node\Microsoft\GenericBootstrapper*

Каждый распространяемый компонент создается в своей подпапке в каталоге пакетов. Манифест продукта и распространяемые файлы должны быть помещены в эту вложенную папку. Локализованные версии компонентов и манифестов пакетов должны быть помещены в вложенные папки с именем "Имя языка и региональных параметров".

После того как файлы будут скопированы в папку начального загрузчика, пакет начального загрузчика автоматически появится в диалоговом окне необходимых компонентов Visual Studio. Если пользовательский пакет начального загрузчика не появился, закройте и снова откройте диалоговое окно необходимых компонентов. Дополнительные сведения см. в разделе Диалоговое окно "Необходимые компоненты".

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

Свойство Description
ApplicationName Имя приложения.
ProcessorArchitecture Процессор и количество бит на слово в платформе, для которой предназначен исполняемый файл. В эти значения входят:

— Intel
— IA64
— AMD64
VersionNT Номер версии для операционных систем Windows. Синтаксис версии — Major.Minor.ServicePack.
VersionMSI Версия сборки установщика Windows (msi.dll), выполняемая во время установки.
AdminUser Данное свойство устанавливается, если пользователь имеет права администратора. Значения — true или false.
InstallMode Режим установки показывает, откуда должен быть установлен компонент. В эти значения входят:

— HomeSite: необходимые компоненты должны устанавливаться с веб-сайта поставщика.
— SpecificSite: необходимые компоненты должны устанавливаться из выбранного расположения.
— SameSite: необходимые компоненты должны устанавливаться из расположения приложения.

Отдельные распространяемые компоненты из установок приложений

Размещение распространяемых файлов в проектах установки можно предотвратить. Для этого необходимо создать список распространяемых компонентов в папке RedistList каталога .NET Framework:

%ProgramFiles%\Microsoft.NET\RedistList

Распространяемый список — это 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>