Instalación de ensamblados Win32 para compartir en paralelo

A continuación se describe cómo crear un paquete de Windows Installer para instalar un ensamblado Win32. El paquete instala un ensamblado en paralelo en la carpeta Winsxs para el uso compartido de la aplicación. Después de instalar el paquete, el ensamblado compartido está disponible globalmente para cualquier aplicación que especifique una dependencia del ensamblado en un archivo de manifiesto de ensamblado. El instalador no registra globalmente el ensamblado en paralelo en el sistema.

Tenga en cuenta que puede instalar ensamblados en paralelo compartidos mediante módulos de combinación.

Antes de continuar, debe saber cómo crear un paquete de Windows Installer sin ensamblados. Para obtener un ejemplo de cómo crear una instalación sencilla, vea Un ejemplo de instalación.

Para instalar un ensamblado compartido en paralelo

  1. Defina un componente de Windows Installer que incluya el ensamblado Win32. Este componente puede contener otros recursos que siempre se deben instalar o quitar con el ensamblado. Todos los demás componentes de la aplicación se pueden crear de la misma forma que para una instalación sin ensamblados. Agregue una fila a la tabla Component para el componente que contiene el ensamblado Win32. Escriba un GUID de Windows Installer válido para este código de componente. No use el archivo de manifiesto como ruta de acceso de la clave para este componente.
  2. Agregue una fila a la tabla FeatureComponents que vincule el componente a una característica de Windows Installer. Para obtener información, consulte Componentes y características. Una característica de Windows Installer debe ser una parte de la funcionalidad de la aplicación que un usuario pueda reconocer. El ensamblado se activa cuando esta característica se selecciona o cuando genera errores mediante una aplicación. Si el ensamblado define una característica adicional, agregue otra fila más a la tabla Feature para los atributos de esa característica. Este paso no es necesario al crear un módulo de combinación.
  3. En el caso de los ensamblados en paralelo, la información de enlace y activación (como las clases COM, las interfaces y las bibliotecas de tipos) se almacena en archivos de manifiesto en lugar de en el registro. Los ensamblados compartidos almacenan esta información en un manifiesto de ensamblado. En los sistemas que admiten ensamblados en paralelo, el instalador omite el procesamiento de cualquier información sobre el componente especificado en las tablas Extension, Verb, TypeLib, MIME, Class, ProgId y AppId. La información de enlace y activación se puede introducir en estas tablas para que la usen los sistemas que no admiten el uso compartido de ensamblados en paralelo.
  4. La instalación en paralelo no registra globalmente el ensamblado, el instalador omite el registro automático del componente si se ha escrito información de registro automático en la tabla SelfReg. La información de registro automático se puede introducir en la tabla SelfReg para el registro automático del componente en sistemas que no admiten el uso compartido de ensamblados en paralelo.
  5. Agregue cualquier otra información de Registro —exclusiva del enlace/activación o del registro automático del componente— a las tablas Registry, RemoveRegistry y Environment.
  6. Dado que se trata de un ensamblado compartido, no genera un archivo .local. No incluya información para este componente en la tabla IsolatedComponent. El instalador omite la tabla IsolatedComponent en el caso de este componente en los sistemas operativos que admiten el uso compartido en paralelo. Agregue información a la tabla IsolatedComponent si desea que el ensamblado sea privado en sistemas que admiten archivos .local.
  7. Para habilitar el uso compartido en paralelo, el ensamblado Win32 debe instalarse en la carpeta Winsxs. Esto se logra dejando el valor null en la columna File_Application de la tabla MsiAssembly para el ensamblado. Esto indica al instalador que instale el ensamblado en la carpeta WinSxS, en lugar de en la carpeta del componente. Agregue una fila a la tabla MsiAssembly para el componente que contiene el ensamblado Win32. Escriba un valor de 1 en el campo Attributes de la tabla MsiAssembly para especificar que se trata de un ensamblado Win32. Para un ensamblado compartido, deje el campo File_Application vacío. Agregue la acción MsiPublishAssemblies a la tabla InstallExecuteSequence o a la tabla AdvtExecuteSequence. Agregue la acción MsiUnpublishAssemblies a la tabla InstallExecuteSequence.
  8. Agregue filas a la tabla MsiAssemblyName para el componente. Agregue una fila por cada par nombre-valor especificado en la sección assemblyIdentity del manifiesto. Para obtener un ejemplo, vea la tabla MsiAssemblyName.