Componentes aislados

Los autores de paquetes de instalación pueden especificar que el instalador copie los archivos compartidos (archivos DLL compartidos normalmente) de una aplicación en la carpeta de esa aplicación en lugar de en una ubicación compartida. Después, este conjunto privado de archivos (DLL) es usado solo por la aplicación. Aislar la aplicación junto con sus componentes compartidos de esta manera tiene las siguientes ventajas:

  • La aplicación siempre usa las versiones de los archivos compartidos con los que se implementó.
  • Instalar la aplicación no sobrescribe otras versiones de los archivos compartidos por otras aplicaciones.
  • Las instalaciones posteriores de otras aplicaciones que usan versiones diferentes de los archivos compartidos no pueden sobrescribir los archivos usados por esta aplicación.

Dado que la implementación actual de COM mantiene una única ruta de acceso completa en el registro para cada par CLSID/Context, obliga a todas las aplicaciones a usar la misma versión de un archivo DLL compartido. Para permitir que una aplicación mantenga una copia privada de un servidor COM, el cargador de sistema en Windows 2000 comprueba la presencia de un archivo .LOCAL en la carpeta de la aplicación. Si el cargador de sistema detecta un archivo .LOCAL, modifica su lógica de búsqueda para preferir archivos DLL ubicados en la misma carpeta que la aplicación.

Cuando Windows Installer ejecuta la acción IsolateComponents, se copian los archivos del componente (normalmente un archivo DLL compartido) especificados en la columna Component_Shared de la tabla IsolatedComponent en la misma carpeta que el componente (normalmente un archivo .exe) especificado en la columna Component_Application. El instalador crea un archivo en este directorio, de cero bytes de longitud, con el nombre corto de archivo del archivo de clave para Component_Application (normalmente el nombre es el mismo que el .exe de la aplicación) anexado con .LOCAL. El instalador usa el registro del componente en su ubicación compartida y no escribe ninguna información de registro para la copia del componente en la ubicación privada.

Para más información, consulte: