Создание манифеста продукта

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

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

Создание манифеста продукта

Создание манифеста продукта

  1. Создайте каталог для пакета начальной загрузки. В этом примере используется C:\package.

  2. В Visual Studio создайте XML-файл с именем product.xml и сохраните его в папке C:\package .

  3. Добавьте следующий XML-код, чтобы описать пространство имен XML и код продукта для пакета. Замените код продукта уникальным идентификатором пакета.

    <Product
    xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
    ProductCode="Custom.Bootstrapper.Package">
    
  4. Добавьте XML, чтобы указать, что пакет имеет зависимость. В этом примере используется зависимость от установщика Microsoft Windows 3.1.

    <RelatedProducts>
        <DependsOnProduct Code="Microsoft.Windows.Installer.3.1" />
      </RelatedProducts>
    
  5. Добавьте XML для перечисления всех файлов, которые находятся в пакете начальной загрузки. В этом примере используется имя файла пакета CorePackage.msi.

    <PackageFiles>
        <PackageFile Name="CorePackage.msi"/>
    </PackageFiles>
    
  6. Скопируйте или переместите файл CorePackage.msi в папку C:\package .

  7. Добавьте XML для установки пакета с помощью команд начальной загрузки. Загрузчик автоматически добавляет флаг /qn в MSI-файл , который автоматически устанавливается. Если файл является EXE-файлом, загрузчик запускает exe-файл с помощью оболочки. Следующий XML-код не содержит аргументов в CorePackage.msi, но можно поместить аргумент командной Arguments строки в атрибут.

    <Commands>
        <Command PackageFile="CorePackage.msi" Arguments="">
    
  8. Добавьте следующий XML-код в проверка, если установлен этот пакет начальной загрузки. Замените код продукта ИДЕНТИФИКАТОРом GUID для распространяемого компонента.

    <InstallChecks>
        <MsiProductCheck
            Property="IsMsiInstalled"
            Product="{XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"/>
    </InstallChecks>
    
  9. Добавьте XML для изменения поведения загрузчика в зависимости от того, установлен ли компонент начальной загрузки. Если компонент установлен, пакет начальной загрузки не запускается. Следующие xml-проверка, если текущий пользователь является администратором, так как для этого компонента требуются права администратора.

    <InstallConditions>
        <BypassIf
           Property="IsMsiInstalled"
           Compare="ValueGreaterThan" Value="0"/>
        <FailIf Property="AdminUser"
            Compare="ValueNotEqualTo" Value="True"
            String="NotAnAdmin"/>
    </InstallConditions>
    
  10. Добавьте XML для задания кодов выхода, если установка выполнена успешно, и при необходимости перезагрузки. Следующий XML-код демонстрирует коды выхода Fail и FailReboot, указывающие, что загрузчик не будет продолжать установку пакетов.

    <ExitCodes>
        <ExitCode Value="0" Result="Success"/>
        <ExitCode Value="1641" Result="SuccessReboot"/>
        <ExitCode Value="3010" Result="SuccessReboot"/>
        <DefaultExitCode Result="Fail" String="GeneralFailure"/>
    </ExitCodes>
    
  11. Добавьте следующий XML-код, чтобы завершить раздел для команд начальной загрузки.

        </Command>
    </Commands>
    
  12. Переместите папку C:\package в каталог начальной загрузки Visual Studio. Для более старых версий Visual Studio это каталог \Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages .

Пример

Манифест продукта содержит инструкции по установке пользовательских предварительных требований.

<?xml version="1.0" encoding="utf-8" ?>
<Product
  xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
  ProductCode="Custom.Bootstrapper.Package">

  <RelatedProducts>
    <DependsOnProduct Code="Microsoft.Windows.Installer.3.1" />
  </RelatedProducts>

  <PackageFiles>
    <PackageFile Name="CorePackage.msi"/>
  </PackageFiles>

  <InstallChecks>
    <MsiProductCheck Property="IsMsiInstalled"
      Product="{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"/>
  </InstallChecks>

  <Commands>
    <Command PackageFile="CorePackage.msi" Arguments="">

      <InstallConditions>
        <BypassIf Property="IsMsiInstalled"
          Compare="ValueGreaterThan" Value="0"/>
        <FailIf Property="AdminUser"
          Compare="ValueNotEqualTo" Value="True"
         String="NotAnAdmin"/>
      </InstallConditions>

      <ExitCodes>
        <ExitCode Value="0" Result="Success"/>
        <ExitCode Value="1641" Result="SuccessReboot"/>
        <ExitCode Value="3010" Result="SuccessReboot"/>
        <DefaultExitCode Result="Fail" String="GeneralFailure"/>
      </ExitCodes>
    </Command>
  </Commands>
</Product>