Compartir a través de


Tabla de componentes

La tabla Componente enumera los componentes y tiene las columnas siguientes.

Columna Tipo Llave Nullable
Componente identificador Y N
ComponentId GUID de N Y
Directorio_ identificador N N
Atributos entero N N
Condición condición de N Y
KeyPath identificador N Y

Columnas

componente de

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. Las utilidades como GUIDGEN pueden generar GUID que contengan letras minúsculas. Las letras minúsculas deben cambiarse a mayúsculas para convertir estos GUID de código de componente válidos.

Si esta columna es null, el instalador no registra el componente y el componente no se puede quitar ni reparar por el instalador. Esto puede realizarse 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.

Directory_

Clave externa de una entrada en la tabla Directorio. 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 la necesidad de reparación.

Clave externa para la columna uno de la tabla Directorio.

atributos de

Esta columna contiene una marca de bits que especifica las opciones de 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 está descargando 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 de Windows Installer y puede devolver un estado de característica de INSTALLSTATE_BADCONFIG.

Marca de bits
msidbComponentAttributesLocalOnly
0
0x0000
No se puede ejecutar el componente 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 se ejecute 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.
msidbComponentAttributesOptional
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 de . Si el campo Valor del registro correspondiente en 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 en tabla del Registro.
Se recomienda establecer este bit para las entradas del Registro escritas en el subárbol HKCU. Esto garantiza que el instalador escriba las entradas del registro HKCU necesarias cuando haya 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 de sistema adicional para el componente en la configuración del Registro de Windows Installer.
msidbComponentAttributesODBCDataSource
32
0x0020
Si se establece este bit, el valor de la columna KeyPath es una clave en la tabla ODBCDataSource de .
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 anteriormente False y ha cambiado a True, el instalador instala el componente. Si el valor anteriormente era True 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 vuelve a instalar 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 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 el AppId , Class, Extension, ProgId, MIMEy tablas 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 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 reflexión del Registro en todas las claves del Registro existentes y nuevas afectadas por este componente. Si se establece este bit, Windows Installer llama al RegDisableReflectionKey en cada clave a la que accede 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.
Nota: 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 para evitar dejar componentes huérfanos en el equipo. Si se instala una revisión posterior, marcada con la msidbPatchSequenceSupnceSupersedeEarlier valor de su MsiPatchSequence para reemplazar la primera revisión, Windows Installer 4.5 y versiones posteriores pueden anular el registro y desinstalar componentes marcados con el valor msidbComponentAttributesUninstallOnSupersedence. Si el componente no está marcado con este bit, la instalación de una revisión de superseding puede dejar atrás un componente sin usar 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: no se admite el valor msidbComponentAttributesUninstallOnSupersedence y se omite.

msidbComponentAttributesShared
2048
0x0800
Si un componente está marcado 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 comparte la versión más alta del componente en el sistema, incluso si el paquete instaló la versión más alta.
Si la directiva DisableSharedComponent está establecida en 1, ningún paquete obtiene la funcionalidad del componente compartido habilitada por este bit.
Windows Installer 4.0 y versiones anteriores: el valor de msidbComponentAttributesShared no se admite y se omite.

Condición

Esta columna contiene una instrucción condicional que puede controlar si se instala un componente. 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 de . Para habilitar o deshabilitar un componente después de CostFinalize, debe usar una acción personalizada o el 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 aunque la instrucción condicional de la columna Condición se evalúe posteriormente 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 instrucciones condicionales, vea Sintaxis de instrucción condicional.

KeyPath

Este valor apunta a un archivo o carpeta que pertenece al componente que usa el instalador 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 el registro de , ODBCDataSourceo Tablas de archivos en función del valor atributo. 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 se vacían, 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 de Windows Installer contiene un archivo o una clave del Registro que está protegida por Protección de recursos de Windows (WRP) o un archivo protegido por Protección de archivos de Windows (PMA), este recurso debe usarse como KeyPath para el componente. En este caso, Windows Installer 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 La protección de recursos de Windows. Para obtener más información, consulte Usar Windows Installer y Windows Resource Protection.

Observaciones

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

El instalador realiza un seguimiento de los archivos DLL compartidos independientemente del recuento de referencias de DLL compartidos 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 se establece y el recuento de referencias aún no existe, el instalador no creará uno. Tenga en cuenta que el recuento de referencias de SharedDLLs del registro se incrementa para los archivos instalados en la carpeta System.

Si no se establece msidbComponentAttributesSharedDllRefCount, otra aplicación puede quitar el componente incluso si sigue siendo 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 msidbComponentAttributesSharedDllRefCount bit 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.
  • La aplicación heredada se desinstala.
  • El recuento de referencias del componente compartido se reduce 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 run-from-source sin diseñarse específicamente para dicho uso. Consulte la tabla ServiceInstall para obtener más información.

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 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 estableciendo en la interfaz de usuario, se producirían errores en las llamadas posteriores a LoadLibrary en el archivo DLL.

Consulte también control de los estados de selección de características.

Validación

ice02
ICE03
ICE06
ICE07 de
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