Tabla de componentes

En la tabla Componente se enumeran los componentes y tiene las columnas siguientes.

Columna Tipo Clave Nullable
Componente Identificador Y N
Componentid GUID N Y
Directorio_ Identificador N N
Atributos Entero N N
Condición Condition N Y
KeyPath Identificador N Y

Columnas

Componente

Identifica el registro del componente.

Clave de tabla principal.

Componentid

GUID de cadena único para este componente, versión e idioma.

Tenga en cuenta que las letras de estos GUID deben estar en mayúsculas. Utilidades como GUIDGEN pueden generar GUID que contengan letras minúsculas. Las letras minúsculas deben cambiarse a mayúsculas para que estos GUID de código de componente sean válidos.

Si esta columna es NULL, el instalador no registra el componente y el instalador no puede quitarlo ni repararlo. Esto puede hacerse intencionadamente si el componente solo es necesario durante la instalación, como una acción personalizada que limpia archivos temporales o quita un producto antiguo. También puede ser útil al copiar archivos de datos en el equipo de un usuario que no es necesario registrar.

Directorio_

Clave externa de una entrada en la tabla Directory. Se trata de un nombre de propiedad cuyo valor contiene la ruta de acceso real, que se puede establecer mediante la acción AppSearch o con la configuración predeterminada obtenida de la tabla Directory.

Los desarrolladores deben evitar la creación de componentes que coloquen archivos en una de las carpetas de perfil de usuario. Estos archivos no estarían disponibles para todos los usuarios en situaciones de varios usuarios y podrían hacer que el instalador vea permanentemente el componente como que requiere reparación.

Clave externa para la columna uno de la tabla Directory.

Atributos

Esta columna contiene una marca de bits que especifica las opciones para la ejecución remota. Agregue el bit indicado al valor total de la columna para incluir una opción.

Nota

En el caso de un archivo .msi que se descarga desde una ubicación web, las marcas de atributo no deben establecerse para permitir que un componente se ejecute desde el origen. Se trata de una limitación del instalador Windows y puede devolver un estado de característica de INSTALLSTATE _ BADCONFIG.

Marca de bits
msidbComponentAttributesLocalOnly
0
0x0000
El componente no se puede ejecutar desde el origen. Establezca este bit para todos los componentes que pertenecen a una característica para evitar que la característica se ejecute desde la red o desde el origen. Tenga en cuenta que si una característica no tiene componentes, la característica siempre muestra run-from-source y run-from-my-computer como opciones válidas.
msidbComponentAttributesSourceOnly
1
0x0001
El componente solo se puede ejecutar desde el origen. Establezca este bit para todos los componentes que pertenecen a una característica para evitar que la característica se ejecute desde mi equipo. Tenga en cuenta que si una característica no tiene componentes, la característica siempre muestra run-from-source y run-from-my-computer como opciones válidas.
msidbComponentAttributesOpcional
2
0x0002
El componente se puede ejecutar localmente o desde el origen.
msidbComponentAttributesRegistryKeyPath
4
0x0004
Si se establece este bit, el valor de la columna KeyPath se usa como clave en la tabla del Registro. Si el campo Valor del registro correspondiente de la tabla del Registro es NULL, el campo Nombre de ese registro no debe contener "+", "-" o "*". Para obtener más información, vea la descripción del campo Nombre de la tabla del Registro.
Se recomienda establecer este bit para las entradas del Registro escritas en el subárbol HKCU. Esto garantiza que el instalador escribe las entradas del Registro HKCU necesarias cuando hay varios usuarios en la misma máquina.
msidbComponentAttributesSharedDllRefCount
8
0x0008
Si se establece este bit, el instalador incrementa el recuento de referencias en el registro DLL compartido del archivo de clave del componente. Si no se establece este bit, el instalador incrementa el recuento de referencias solo si el recuento de referencias ya existe.
msidbComponentAttributesPermanent
16
0x0010
Si se establece este bit, el instalador no quita el componente durante una desinstalación. El instalador registra un cliente del sistema adicional para el componente en la configuración del registro Windows Installer.
msidbComponentAttributesODBCDataSource
32
0x0020
Si se establece este bit, el valor de la columna KeyPath es una clave en la tabla ODBCDataSource.
msidbComponentAttributesTransitive
64
0x0040
Si se establece este bit, el instalador vuelve a evaluar el valor de la instrucción en la columna Condición tras una reinstalación. Si el valor era false anteriormente y ha cambiado a True, el instalador instala el componente. Si el valor era true anteriormente y ha cambiado a False, el instalador quita el componente incluso si el componente tiene otros productos como clientes.
Este bit solo debe establecerse para componentes transitivos. Consulte Uso de componentes transitivos.
msidbComponentAttributesNeverOverwrite
128
0x0080
Si se establece este bit, el instalador no instala ni reinstala el componente si ya existe un archivo de ruta de acceso de clave o una entrada del Registro de ruta de acceso de clave para el componente. La aplicación se registra como un cliente del componente.
Use esta marca solo para los componentes registrados por la tabla del Registro. No use esta marca para los componentes registrados por las tablas AppId, Class, Extension, ProgId, MIMEy Verb.
msidbComponentAttributes64bit
256
0x0100
Establezca este bit para marcarlo como un componente de 64 bits. Este atributo facilita la instalación de paquetes que incluyen componentes de 32 y 64 bits. Si no se establece este bit, el componente se registra como un componente de 32 bits.
Si se trata de un componente de 64 bits que reemplaza a un componente de 32 bits, establezca este bit y asigne un nuevo GUID en la columna ComponentId.
msidbComponentAttributesDisableRegistryReflection
512
0x0200
Establezca este bit para deshabilitar la reflexión del Registro en todas las claves del Registro nuevas y existentes afectadas por este componente. Si se establece este bit, Windows Installer llama a RegDisableReflectionKey en cada clave a la que tiene acceso el componente. Este bit está disponible con Windows Installer versión 4.0. Este bit se omite en sistemas de 32 bits. Este bit se omite en las versiones de 64 bits de Windows XP.
[!Note]
Las aplicaciones de Windows de 32 bits que se ejecutan en el emulador de Windows de 64 bits (WOW64) hacen referencia a una vista diferente del registro que las aplicaciones de 64 bits. La reflexión del Registro copia algunos valores del Registro entre estas dos vistas del Registro.


msidbComponentAttributesUninstallOnSupersedence
1024
0x0400
Establezca este bit para un componente de un paquete de revisión con el fin de evitar que los componentes huérfanos se quede en el equipo. Si se instala una revisión posterior, marcada con el valor msidbPatchSequenceSupersedeEarlier en su tabla MsiPatchSequence para sustituir la primera revisión, Windows Installer 4.5 y versiones posteriores puede anular el registro y desinstalar los componentes marcados con el valor msidbComponentAttributesUninstallOnSupersedence. Si el componente no está marcado con este bit, la instalación de una revisión superseding puede dejar un componente no utilizado en el equipo.
Establecer la propiedad MSIUNINSTALLSUPERSEDEDCOMPONENTS tiene el mismo efecto que establecer este bit para todos los componentes.
Windows Installer 4.0 y versiones anteriores: el valor msidbComponentAttributesUninstallOnSupersedence no se admite y se omite.

msidbComponentAttributesShared
2048
0x0800
Si un componente se marca con este valor de atributo en al menos un paquete instalado en el sistema, el instalador trata el componente como marcado en todos los paquetes. Si se desinstala un paquete que comparte el componente marcado, Windows Installer 4.5 puede seguir compartiendo la versión más alta del componente en el sistema, incluso si el paquete que se está desinstalando instaló la versión más alta.
Si la directiva DisableSharedComponent está establecida en 1, ningún paquete obtiene la funcionalidad de componente compartido habilitada por este bit.
Windows Installer 4.0 y versiones anteriores: el valor msidbComponentAttributesShared no se admite y se omite.

Condición

Esta columna contiene una instrucción condicional que puede controlar si un componente está instalado. Si la condición es null o se evalúa como true, el componente está habilitado. Si la condición se evalúa como False, el componente está deshabilitado y no está instalado.

El campo Condición habilita o deshabilita un componente solo durante la acción CostFinalize. Para habilitar o deshabilitar un componente después de CostFinalize, debe usar una acción personalizada o doAction ControlEvent para llamar a MsiSetComponentState.

Tenga en cuenta que, a menos que el bit transitivo de la columna Atributos esté establecido para un componente, el componente permanece habilitado una vez instalado incluso si la instrucción condicional de la columna Condición se evalúa más adelante como False en una instalación de mantenimiento posterior del producto.

La columna Condición de la tabla Componente acepta expresiones condicionales que contienen referencias a los estados instalados de características y componentes. Para obtener información sobre la sintaxis de las instrucciones condicionales, vea Sintaxis de instrucciones condicionales.

KeyPath

Este valor apunta a un archivo o carpeta que pertenece al componente que el instalador usa para detectar el componente. Dos componentes no pueden compartir el mismo valor de ruta de acceso de clave. El valor de esta columna también es la ruta de acceso devuelta por la función MsiGetComponentPath.

Si el valor no es NULL, KeyPath es una clave principal en las tablas Registry, ODBCDataSourceo File en función del valor attribute. Si KeyPath es NULL, la carpeta de la columna _ Directory se usa como ruta de acceso de la clave.

Dado que las carpetas creadas por el instalador se eliminan cuando están vacías, debe crear una entrada en la tabla CreateFolder para instalar un componente que consta de una carpeta vacía.

Tenga en cuenta que si un componente del instalador de Windows contiene un archivo o una clave del Registro que está protegido por Windows Resource Protection (WRP) o un archivo protegido por Windows File Protection (WFP), este recurso debe usarse como KeyPath para el componente. En este caso, Windows instalador no instala, actualiza ni quita el componente. No debe incluir ningún recurso protegido en un paquete de instalación. En su lugar, debe usar los mecanismos de reemplazo de recursos admitidos para Windows Resource Protection. Para obtener más información, vea Using Windows Installer and Windows Resource Protection.

Observaciones

Para obtener una explicación de la relación entre los componentes y las características, vea Tabla de características.

El instalador realiza un seguimiento de los archivos DLL compartidos independientemente del recuento de referencias dll compartidas en el Registro. Si existe un recuento de referencias para un archivo DLL compartido en el Registro, el instalador siempre incrementa el recuento cuando instala el archivo y lo disminuye cuando se desinstala. Si msidbComponentAttributesSharedDllRefCount no está establecido y el recuento de referencias aún no existe, el instalador no creará uno. Tenga en cuenta que el recuento de referencias de SharedDLLs en el Registro se incrementa para los archivos instalados en la carpeta System.

Si msidbComponentAttributesSharedDllRefCount no está establecido, otra aplicación puede quitar el componente incluso si todavía es necesario. Para ver cómo podría ocurrir esto, considere el siguiente escenario:

  • Una aplicación que usa el instalador instala un componente compartido.
  • El bit msidbComponentAttributesSharedDllRefCount no está establecido y no hay ningún recuento de referencias. Por lo tanto, el instalador no inicia un recuento de referencias.
  • Se instala una aplicación heredada que comparte este componente y no usa el instalador.
  • La aplicación heredada crea e incrementa un recuento de referencias para el componente compartido.
  • Se desinstala la aplicación heredada.
  • El recuento de referencias del componente compartido se disminuye a cero y se quita el componente.
  • La aplicación que usa el instalador ya no tiene acceso al componente.

Para evitar este comportamiento, establezca msidbComponentAttributesSharedDllRefCount.

Tenga en cuenta que los componentes de servicios del sistema no deben especificarse como de ejecución desde el origen sin estar diseñados específicamente para tal uso. Consulte la tabla ServiceInstall para obtener más detalles.

Tenga en cuenta que los atributos que habilitan la instalación de ejecución desde el origen nunca deben establecerse para los componentes que contienen bibliotecas de vínculos dinámicos que van a entrar en la carpeta del sistema. El motivo es que si el estado de instalación del componente se establece en run-from-source siguiendo una característica o estando establecido en la interfaz de usuario, se producirá un error en las llamadas posteriores a LoadLibrary en el archivo DLL.

Vea también Controlar los estados de selección de características.

Validación

ICE02
ICE03
ICE06
ICE07
ICE08
ICE09
ICE18
ICE19
ICE21
ICE30
ICE32
ICE35
ICE38
ICE41
ICE42
ICE43
ICE46
ICE50
ICE54
ICE57
ICE59
ICE62
ICE67
ICE76
ICE79
ICE80
ICE83
ICE86
ICE88
ICE91
ICE92
ICE97