Criar um manifesto do produto

Para implantar pré-requisitos para seu aplicativo, você pode criar um pacote do bootstrapper. Um pacote do bootstrapper contém apenas um arquivo de manifesto do produto, mas um manifesto de pacote para cada localidade. O manifesto do pacote contém aspectos específicos da localização do pacote. Isso inclui cadeias de caracteres, contratos de licença do usuário final e os pacotes de idiomas.

Para obter mais informações sobre manifestos de pacote, confira Como criar um manifesto de pacote.

Criar o manifesto do produto

Para criar o manifesto do produto

  1. Crie um diretório para o pacote do bootstrapper. Este exemplo usa C:\package.

  2. No Visual Studio, crie um arquivo XML chamado product.xml e salve-o na pasta C:\package.

  3. Adicione o XML a seguir para descrever o namespace XML e o código do produto para o pacote. Substitua o código do produto por um identificador exclusivo para o pacote.

    <Product
    xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
    ProductCode="Custom.Bootstrapper.Package">
    
  4. Adicione XML para especificar que o pacote tem uma dependência. Este exemplo usa uma dependência no Microsoft Windows Installer 3.1.

    <RelatedProducts>
        <DependsOnProduct Code="Microsoft.Windows.Installer.3.1" />
      </RelatedProducts>
    
  5. Adicione XML para listar todos os arquivos que estão no pacote do bootstrapper. Este exemplo usa o nome do arquivo de pacote CorePackage.msi.

    <PackageFiles>
        <PackageFile Name="CorePackage.msi"/>
    </PackageFiles>
    
  6. Copie ou mova o arquivo CorePackage.msi para a pasta C:\package.

  7. Adicione XML para instalar o pacote usando comandos do bootstrapper. O bootstrapper adiciona automaticamente o sinalizador /qn ao arquivo .msi, que será instalado silenciosamente. Se o arquivo for um .exe, o bootstrapper executará o arquivo .exe usando o shell. O XML a seguir não mostra argumentos para CorePackage.msi, mas você pode colocar o argumento de linha de comando no atributo Arguments.

    <Commands>
        <Command PackageFile="CorePackage.msi" Arguments="">
    
  8. Adicione o XML a seguir para verificar se esse pacote do bootstrapper está instalado. Substitua o código do produto pelo GUID do componente redistribuível.

    <InstallChecks>
        <MsiProductCheck
            Property="IsMsiInstalled"
            Product="{XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"/>
    </InstallChecks>
    
  9. Adicione XML para alterar o comportamento do bootstrapper, dependendo se o componente bootstrapper já está instalado. Se o componente estiver instalado, o pacote do bootstrapper não será executado. O XML a seguir verifica se o usuário atual é um administrador porque esse componente exige privilégios administrativos.

    <InstallConditions>
        <BypassIf
           Property="IsMsiInstalled"
           Compare="ValueGreaterThan" Value="0"/>
        <FailIf Property="AdminUser"
            Compare="ValueNotEqualTo" Value="True"
            String="NotAnAdmin"/>
    </InstallConditions>
    
  10. Adicione XML para definir códigos de saída se a instalação for bem-sucedida e se uma reinicialização for necessária. O XML a seguir demonstra os códigos de saída Fail e FailReboot, que indicam que o bootstrapper não continuará instalando pacotes.

    <ExitCodes>
        <ExitCode Value="0" Result="Success"/>
        <ExitCode Value="1641" Result="SuccessReboot"/>
        <ExitCode Value="3010" Result="SuccessReboot"/>
        <DefaultExitCode Result="Fail" String="GeneralFailure"/>
    </ExitCodes>
    
  11. Adicione o XML a seguir para encerrar a seção para comandos do bootstrapper.

        </Command>
    </Commands>
    
  12. Mova a pasta C:\package para o diretório do bootstrapper do Visual Studio. Para versões mais antigas do Visual Studio, este é o diretório \Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages.

Exemplo

O manifesto do produto contém instruções de instalação para pré-requisitos personalizados.

<?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>