Compartilhar via


Criar pacotes de bootstrapper

O programa de instalação é um instalador genérico que pode ser configurado para detectar e instalar componentes redistribuíveis, como arquivos do Windows Installer (.msi) e programas executáveis. O instalador também é conhecido como um "bootstrapper", que é um tipo de instalador inicializador. Ele é programado por meio de um conjunto de manifestos XML que especificam os metadados para gerenciar a instalação do componente. Cada componente redistribuível, ou pré-requisito, que aparece na caixa de diálogo Pré-requisitos para ClickOnce é um pacote bootstrapper. Um pacote de inicialização é um grupo de diretórios e arquivos que contém arquivos de manifesto descrevendo como o pré-requisito deve ser instalado.

Primeiramente, o bootstrapper detecta se algum dos pré-requisitos já está instalado. Se os pré-requisitos não estiverem instalados, primeiro o bootstrapper mostrará os contratos de licença. Em segundo lugar, depois que o usuário final aceita os contratos de licença, a instalação começa para os pré-requisitos. Caso contrário, se todos os pré-requisitos forem detectados, o bootstrapper simplesmente iniciará o instalador do aplicativo.

Criar pacotes de bootstrapper personalizados

Você pode gerar os manifestos do bootstrapper usando o Editor XML no Visual Studio. Para ver um exemplo de criação de um pacote de bootstrapper, consulte Passo a passo: criar um bootstrapper personalizado com um prompt de privacidade.

Para criar um pacote de bootstrapper, você precisa criar um manifesto do produto e também um manifesto de pacote para cada versão localizada de um componente.

  • O manifesto do produto, product.xml, contém metadados independentes de idioma para o pacote. Isso contém metadados comuns a todas as versões localizadas do componente redistribuível. Para criar esse arquivo, consulte Como criar um manifesto do produto.

  • O manifesto do pacote, package.xml, contém metadados específicos do idioma; Normalmente, ele contém mensagens de erro localizadas. Um componente deve ter pelo menos um manifesto de pacote para cada versão localizada desse componente. Para criar esse arquivo, consulte Como criar um manifesto do pacote.

Depois que esses arquivos forem criados, coloque o arquivo de manifesto do produto em uma pasta nomeada para o bootstrapper personalizado. O arquivo de manifesto do pacote entra em uma pasta nomeada para a localidade. Por exemplo, se o arquivo de manifesto do pacote for para redistribuição em inglês, coloque o arquivo em uma pasta chamada en. Repita esse processo para cada localidade, como ja para japonês e de para alemão. O pacote final do bootstrapper personalizado pode ter a seguinte estrutura de diretórios.

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

Em seguida, copie os arquivos redistribuíveis para o local da pasta bootstrapper. Para obter mais informações, consulte Como criar um pacote de bootstrapper localizado.

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

ou

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

Observação

O caminho listado acima no caminho de instalação do Visual Studio funciona a partir da versão do Visual Studio 2019 Atualização 7.

Você também pode encontrar o local da pasta bootstrapper a partir do valor Path na seguinte chave de registro:

*HKLM\Software\Microsoft\GenericBootstrapper*

Em sistemas de 64 bits, use a seguinte chave do Registro:

*HKLM\Software\Wow6432Node\Microsoft\GenericBootstrapper*

Cada componente redistribuível aparece em sua própria subpasta no diretório de pacotes. O manifesto do produto e os arquivos redistribuíveis devem ser colocados nessa subpasta. As versões localizadas do componente e dos manifestos do pacote devem ser colocadas em subpastas nomeadas de acordo com o Nome da Cultura.

Depois que esses arquivos são copiados para a pasta bootstrapper, o pacote bootstrapper aparece automaticamente na caixa de diálogo Pré-requisitos do Visual Studio. Se o pacote inicializador personalizado não aparecer, feche e reabra a caixa de diálogo Pré-requisitos . Para obter mais informações, consulte a caixa de diálogo Pré-requisitos.

A tabela a seguir mostra as propriedades que são preenchidas automaticamente pelo bootstrapper.

Propriedade Descrição
NomeDaAplicação O nome do aplicativo.
Arquitetura do Processador O processador e bits por palavra da plataforma destinada por um executável. Os valores incluem o seguinte:

-Inteligência
- IA64
- AMD64
VersionNT O número de versão dos sistemas operacionais Windows. A sintaxe da versão é Major.Minor.ServicePack.
VersionMSI A versão do assembly do Windows Installer (msi.dll) que será executada durante a instalação.
AdminUser Essa propriedade será definida se o usuário tiver privilégios de administrador. Os valores são verdadeiros ou falsos.
Modo de Instalação O modo de instalação indica de onde o componente precisa ser instalado. Os valores incluem o seguinte:

– HomeSite – os pré-requisitos são instalados no site do fornecedor.
– SpecificSite – os pré-requisitos são instalados no local selecionado.
- SameSite - os pré-requisitos são instalados do mesmo local que o aplicativo.

Separar redistribuíveis das instalações de aplicações

Você pode impedir que seus arquivos redistribuíveis sejam implantados em projetos de instalação. Para fazer isso, crie uma lista redistribuível na pasta RedistList no diretório do .NET Framework:

%ProgramFiles%\Microsoft.NET\RedistList

A lista redistribuível é um arquivo XML que você deve nomear usando o seguinte formato: <Nome> da Empresa.<Nome do> componente.RedistList.xml. Portanto, por exemplo, se o componente for chamado DataWidgets feito pelo Acme, use Acme.DataWidgets.RedistList.xml. Um exemplo do conteúdo da lista redistribuível pode ser semelhante a este:

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