Como instalar assemblies Win32 para o uso particular de um aplicativo no Windows XP

O procedimento descrito neste tópico identifica como criar um pacote do Windows Installer para instalar um assembly Win32. O pacote instala o assembly e um arquivo de manifesto do aplicativo em uma pasta criada usada pelo aplicativo. O manifesto do aplicativo especifica a dependência do aplicativo no assembly particular. Após a instalação do pacote, o assembly particular estará disponível para uso exclusivo do aplicativo. A dependência do assembly especificada no manifesto do aplicativo substitui (para este aplicativo) todas as outras dependências de assembly globais especificadas nos arquivos de manifesto do assembly.

Antes de você continuar, será uma boa ideia entender como criar um pacote do Windows Installer sem assemblies. Para obter mais informações, confira Um exemplo de instalação.

Para instalar um assembly particular no Windows XP

  1. Defina um componente do Windows Installer que inclua o assembly Win32 e o arquivo de manifesto do aplicativo. Esse componente pode conter outros recursos que sempre devem ser instalados ou removidos com o assembly. As etapas restantes deste procedimento descrevem como criar o banco de dados de instalação para instalar esse componente.
  2. Adicione uma linha à tabela Component para o componente que contém o assembly Win32 e o arquivo de manifesto do aplicativo. Insira um GUID válido do Windows Installer para esse código de componente. Para obter mais informações, confira Como alterar o código do componente e O que acontece se as regras de componentes são quebradas?
  3. O instalador copia o arquivo de manifesto do assembly para a pasta que contém o arquivo especificado no campo File_Application da tabela MsiAssembly.
  4. Adicione uma linha à tabela FeatureComponents que associa o componente a um recurso do Windows Installer. Para obter mais informações, confira Componentes e recursos. Um recurso do Windows Installer deve ser uma parte da funcionalidade do aplicativo que um usuário pode reconhecer. O assembly é ativado quando esse recurso é selecionado por um usuário ou falha em um aplicativo. Se o assembly definir um recurso adicional, adicione uma linha adicional à tabela Feature para os atributos de recurso. Essa etapa não será necessária se você estiver criando um módulo de mesclagem.
  5. Para assemblies lado a lado, as informações de associação e ativação, por exemplo, classes COM, interfaces e bibliotecas de tipos, são armazenadas em arquivos de manifesto em vez do Registro. Os assemblies particulares armazenam essas informações em um manifesto do assembly. Nos sistemas que dão suporte a assemblies lado a lado, o instalador ignora o processamento de qualquer informação sobre o componente inserido nas tabelas Extension, Verb, TypeLib, MIME, Class, ProgId e AppId. As informações de associação e ativação podem ser inseridas nas tabelas para uso de sistemas que não dão suporte ao compartilhamento de assembly lado a lado.
  6. A instalação lado a lado não registra o assembly globalmente. O instalador vai ignorar o registro automático do componente se qualquer informação de registro automático for inserida na tabela SelfReg. As informações de registro automático podem ser inseridas na tabela SelfReg para o registro automático do componente nos sistemas que não dão suporte ao compartilhamento de assembly lado a lado.
  7. Adicione outras informações do Registro, exclusivas de associação e ativação ou registro automático do componente, às tabelas Registry, RemoveRegistry e Environment.
  8. O instalador ignora a tabela IsolatedComponent para esse componente nos sistemas operacionais que dão suporte ao compartilhamento lado a lado. Insira informações nessa tabela caso deseje que o assembly seja particular nos sistemas que dão suporte a arquivos locais.
  9. Adicione uma linha à tabela MsiAssembly para o componente que contém o assembly Win32. Insira o valor 1 no campo Attributes da tabela MsiAssembly para especificar que esse é um assembly Win32. Insira a chave de arquivo do assembly particular no campo File_Application da tabela MsiAssembly. Adicione a ação MsiPublishAssemblies à tabela InstallExecuteSequence ou à tabela AdvtExecuteSequence. Adicione a ação MsiUnpublishAssemblies à tabela InstallExecuteSequence. Crie uma pasta para o assembly e o arquivo de manifesto na tabela Directory. Essa pasta deve estar no diretório raiz do aplicativo e conter o arquivo especificado no campo File_Application da tabela MsiAssembly. Durante a instalação do aplicativo, o instalador resolve a tabela Directory do caminho como essa pasta. Para obter mais informações, confira Como usar a tabela Directory.
  10. Adicione linhas à tabela MsiAssemblyName para o componente. Adicione uma linha para cada par de nome e valor especificado na seção assemblyIdentity do manifesto. Para obter mais informações, confira a tabela MsiAssemblyName.