Como adicionar assemblies a um pacote

Os desenvolvedores do Windows Installer podem usar as diretrizes deste tópico para criar pacotes do Windows Installer que contenham assemblies.

As diretrizes a seguir se aplicam aos assemblies Win32 e aos assemblies usados pelo Common Language Runtime do Microsoft .NET Framework.

  • Um componente do Windows Installer não deve conter mais de um assembly.
  • Todos os arquivos no assembly devem estar em um só componente.
  • Cada componente que contém um assembly deve ter uma entrada na tabela MsiAssembly.
  • O nome forte do cache de assembly de cada assembly deve ser criado na tabela MsiAssemblyName.
  • Use a tabela Registry em vez da tabela Class ao registrar a Interoperabilidade COM de um assembly.
  • Os assemblies que têm o mesmo nome forte são o mesmo assembly. Quando o mesmo assembly é instalado por aplicativos diferentes, os componentes que contêm o assembly devem usar o mesmo valor para ComponentId nas respectivas tabelas Component.

Observação

Os anúncios de produtos identificam os assemblies que podem ser instalados e usados por aplicativos diferentes. Os anúncios de produtos não identificam assemblies particulares.

 

Como adicionar assemblies Win32

Use as seguintes diretrizes ao incluir assemblies Win32:

  • O valor KeyPath da tabela Component para um componente que contém um assembly Win32 não deve ser Null.
  • O valor KeyPath da tabela Component para um componente que contém um assembly de política Win32 deve ser o arquivo de manifesto.
  • O valor KeyPath da tabela Component para um componente que contém um assembly Win32, que não é um assembly de política, não deve ser o arquivo de manifesto ou o arquivo de catálogo. Ele deve ser um arquivo diferente no assembly.
  • Adicione uma linha à tabela MsiAssemblyName para cada par de nome e valor listado na seção assemblyIdentity do manifesto do assembly Win32.

Como adicionar assemblies usados com o .NET Framework

Use as diretrizes a seguir ao incluir assemblies usados pelo Common Language Runtime do .NET Framework.

  • O valor KeyPath da tabela Component para um componente que contém o assembly não deve ser Null.
  • Quando você instala um assembly usado pelo Common Language Runtime no Cache de Assembly Global, o valor da coluna File_Application na tabela MsiAssembly precisa ser Null.
  • Adicione uma linha à tabela MsiAssemblyName para cada atributo do nome forte do assembly. Todos os assemblies precisam ter os atributos Name, Version e Culture especificados na tabela MsiAssemblyName. Um atributo publicKeyToken é necessário para um assembly global. A tabela a seguir é um exemplo da tabela MsiAssemblyName para um assembly global para uso do Common Language Runtime.

Tabela MsiAssemblyName

Componente Nome Valor
ComponentA Nome simple
ComponentA version 1.0.0.0
ComponentA Cultura neutro
ComponentA publicKeyToken 9d1ec8380f483f5a