Partilhar via


Tabela de componentes

A tabela Componente lista componentes e tem as seguintes colunas.

Coluna Tipo Chave Nulo
Componente Identificador Y N
ComponentId GUID N Y
Directory_ Identificador N N
Atributos inteiro N N
Condição Condição N Y
Caminho-chave Identificador N Y

Colunas

Componente

Identifica o registro do componente.

Chave de tabela primária.

ComponentId

Um GUID de cadeia de caracteres exclusivo para este componente, versão e idioma.

Observe que as letras desses GUIDs devem ser maiúsculas. Utilitários como GUIDGEN podem gerar GUIDs contendo letras minúsculas. As letras minúsculas devem ser alteradas para maiúsculas para tornar esses GUIDs de código de componente válidos.

Se esta coluna for nula, o instalador não regista o componente e o componente não pode ser removido ou reparado pelo instalador. Isso pode ser feito intencionalmente se o componente for necessário apenas durante a instalação, como uma ação personalizada que limpa arquivos temporários ou remove um produto antigo. Também pode ser útil ao copiar arquivos de dados para o computador de um usuário que não precisam ser registrados.

Directory_

Chave externa de uma entrada na tabela Directory. Este é um nome de propriedade cujo valor contém o caminho real, que pode ser definido pelo de ação AppSearch ou com a configuração padrão obtida na tabela Directory.

Os desenvolvedores devem evitar a criação de componentes que colocam arquivos em uma das pastas de Perfil de Usuário. Esses arquivos não estariam disponíveis para todos os usuários em situações multiusuário e poderiam fazer com que o instalador visualizasse permanentemente o componente como necessitando de reparo.

Chave externa para a coluna um da tabela Directory.

Atributos

Esta coluna contém um sinalizador de bit que especifica opções para execução remota. Adicione o bit indicado ao valor total na coluna para incluir uma opção.

Observação

No caso de um arquivo de .msi que está sendo baixado de um local da Web, os sinalizadores de atributo não devem ser definidos para permitir que um componente seja executado a partir da fonte. Esta é uma limitação do Windows Installer e pode retornar um estado de recurso de INSTALLSTATE_BADCONFIG.

Sinalizador de bit
msidbComponentAttributesLocalOnly
0
0x0000
O componente não pode ser executado a partir da origem. Defina esse bit para todos os componentes pertencentes a um recurso para impedir que o recurso seja executado a partir da rede ou da origem. Observe que, se um recurso não tiver componentes, o recurso sempre mostrará run-from-source e run-from-my-computer como opções válidas.
msidbComponentAttributesSourceOnly
1
0x0001
O componente só pode ser executado a partir da origem. Defina esse bit para todos os componentes pertencentes a um recurso para impedir que o recurso seja executado a partir do meu computador. Observe que, se um recurso não tiver componentes, o recurso sempre mostrará run-from-source e run-from-my-computer como opções válidas.
msidbComponentAttributesOptional
2
0x0002
O componente pode ser executado localmente ou a partir da origem.
msidbComponentAttributesRegistryKeyPath
4
0x0004
Se esse bit for definido, o valor na coluna KeyPath será usado como uma chave na tabela Registro. Se o campo Valor do registro correspondente na tabela Registro for nulo, o campo Nome nesse registro não deverá conter "+", "-" ou "*". Para obter mais informações, consulte a descrição do campo Nome na tabela Registro.
A configuração desse bit é recomendada para entradas do Registro gravadas na seção HKCU. Isso garante que o instalador escreva as entradas de registro HKCU necessárias quando houver vários usuários na mesma máquina.
msidbComponentAttributesSharedDllRefCount
8
0x0008
Se esse bit estiver definido, o instalador incrementará a contagem de referência no registro DLL compartilhado do arquivo de chave do componente. Se esse bit não estiver definido, o instalador incrementará a contagem de referência somente se a contagem de referência já existir.
msidbComponentAttributesPermanent
16
0x0010
Se esse bit estiver definido, o instalador não removerá o componente durante uma desinstalação. O instalador registra um cliente de sistema extra para o componente nas configurações de registro do Windows Installer.
msidbComponentAttributesODBCDataSource
32
0x0020
Se esse bit estiver definido, o valor na coluna KeyPath será uma chave para a tabela ODBCDataSource .
msidbComponentAttributesTransitive
64
0x0040
Se esse bit estiver definido, o instalador reavaliará o valor da instrução na coluna Condição após uma reinstalação. Se o valor era anteriormente False e foi alterado para True, o instalador instala o componente. Se o valor era anteriormente True e foi alterado para False, o instalador remove o componente mesmo que o componente tenha outros produtos como clientes.
Este bit só deve ser definido para componentes transitivos. Consulte Usando componentes transitivos.
msidbComponentAttributesNeverOverwrite
128
0x0080
Se esse bit estiver definido, o instalador não instalará ou reinstalará o componente se já existir um arquivo de caminho de chave ou uma entrada de registro de caminho de chave para o componente. O aplicativo se registra como um cliente do componente.
Use esse sinalizador somente para componentes que estão sendo registrados pela tabela do Registro. Não use esse sinalizador para componentes registrados pelo AppId, Class, Extension, ProgId, MIMEe tabelas Verb.
msidbComponentAttributes64bit
256
0x0100
Defina este bit para marcá-lo como um componente de 64 bits. Esse atributo facilita a instalação de pacotes que incluem componentes de 32 bits e 64 bits. Se esse bit não estiver definido, o componente será registrado como um componente de 32 bits.
Se este for um componente de 64 bits substituindo um componente de 32 bits, defina esse bit e atribua um novo GUID na coluna ComponentId.
msidbComponentAttributesDisableRegistryReflection
512
0x0200
Defina esse bit para desabilitar de Reflexão do Registro em todas as chaves do Registro novas e existentes afetadas por esse componente. Se esse bit estiver definido, o Windows Installer chamará o RegDisableReflectionKey em cada chave que está sendo acessada pelo componente. Este bit está disponível com o Windows Installer versão 4.0. Este bit é ignorado em sistemas de 32 bits. Este bit é ignorado nas versões de 64 bits do Windows XP.
Nota: aplicativos do Windows de 32 bits executados no emulador do Windows de 64 bits (WOW64) referem-se a uma exibição diferente do Registro do que os aplicativos de 64 bits. A reflexão do Registro copia alguns valores do Registro entre essas duas exibições do Registro.
msidbComponentAttributesUninstallOnSupersedence
1024
0x0400
Defina esse bit para um componente em um pacote de patch para evitar deixar componentes órfãos no computador. Se um patch subsequente for instalado, marcado com o valor de msidbPatchSequenceSupersedeEarlier em sua tabela MsiPatchSequence para substituir o primeiro patch, o Windows Installer 4.5 e posterior poderá cancelar o registro e desinstalar componentes marcados com o valor msidbComponentAttributesUninstallOnSupersedence msidbComponentAttributesUninstallOnSupersedence. Se o componente não estiver marcado com este bit, a instalação de um patch substituto pode deixar para trás um componente não utilizado no computador.
Definir o MSIUNINSTALLSUPERSEDEDCOMPONENTS propriedade tem o mesmo efeito que definir esse bit para todos os componentes.
Windows Installer 4.0 e versões anteriores: O valor de msidbComponentAttributesUninstallOnSupersedence não é suportado e é ignorado.

msidbComponentAttributesShared
2048
0x0800
Se um componente estiver marcado com esse valor de atributo em pelo menos um pacote instalado no sistema, o instalador tratará o componente como marcado em todos os pacotes. Se um pacote que compartilha o componente marcado for desinstalado, o Windows Installer 4.5 poderá continuar a compartilhar a versão mais alta do componente no sistema, mesmo que essa versão mais alta tenha sido instalada pelo pacote que está sendo desinstalado.
Se a política DisableSharedComponent estiver definida como 1, nenhum pacote obterá a funcionalidade de componente compartilhado habilitada por esse bit.
Windows Installer 4.0 e versões anteriores: O valor de msidbComponentAttributesShared não é suportado e é ignorado.

Condição

Esta coluna contém uma instrução condicional que pode controlar se um componente está instalado. Se a condição for nula ou for avaliada como true, o componente será habilitado. Se a condição for avaliada como False, o componente será desativado e não instalado.

O campo Condição habilita ou desabilita um componente somente durante a ação CostFinalize. Para habilitar ou desabilitar um componente após CostFinalize, você deve usar uma ação personalizada ou o DoAction ControlEvent para chamar MsiSetComponentState.

Observe que, a menos que o bit Transitivo na coluna Atributos seja definido para um componente, o componente permanece habilitado uma vez instalado, mesmo que a instrução condicional na coluna Condição seja avaliada posteriormente como Falso em uma instalação de manutenção subsequente do produto.

A coluna Condição na tabela Componente aceita expressões condicionais contendo referências aos estados instalados de recursos e componentes. Para obter informações sobre a sintaxe de instruções condicionais, consulte Conditional Statement Syntax.

KeyPath

Esse valor aponta para um arquivo ou pasta pertencente ao componente que o instalador usa para detetar o componente. Dois componentes não podem compartilhar o mesmo valor de caminho de chave. O valor nesta coluna também é o caminho retornado pela funçãoMsiGetComponentPath.

Se o valor não for nulo, KeyPath será uma chave primária no do Registro, ODBCDataSource ou tabelas File dependendo do valor Attribute. Se KeyPath for null, a pasta da coluna Directory_ será usada como o caminho da chave.

Como as pastas criadas pelo instalador são excluídas quando ficam vazias, você deve criar uma entrada na tabela CreateFolder instalar um componente que consiste em uma pasta vazia.

Observe que, se um componente do Windows Installer contiver um arquivo ou chave do Registro protegido por WRP (Windows Resource Protection) ou um arquivo protegido pela Proteção de Arquivos do Windows (WFP), esse recurso deverá ser usado como o KeyPath para o componente. Nesse caso, o Windows Installer não instala, atualiza ou remove o componente. Você não deve incluir nenhum recurso protegido em um pacote de instalação. Em vez disso, você deve usar os mecanismos de substituição de recursos suportados para Proteção de Recursos do Windows. Para obter mais informações, consulte Usando o Windows Installer e o Windows Resource Protection.

Comentários

Para obter uma discussão sobre a relação entre componentes e recursos, consulte Tabela de recursos.

O instalador mantém o controle de DLLs compartilhadas independentemente da contagem de referência de DLL compartilhada no registro. Se existir uma contagem de referência para uma DLL partilhada no registo, o instalador aumenta sempre a contagem quando está a instalar o ficheiro e diminui-a quando está a ser desinstalado. Se msidbComponentAttributesSharedDllRefCount, não estiver definido e a contagem de referência ainda não existir, o instalador não criará uma. Observe que a contagem de referência SharedDLLs no registro é incrementada para todos os arquivos instalados na pasta System.

Se msidbComponentAttributesSharedDllRefCount não estiver definido, outro aplicativo poderá remover o componente, mesmo que ainda seja necessário. Para ver como isso pode acontecer, considere o seguinte cenário:

  • Um aplicativo que usa o instalador instala um componente compartilhado.
  • O msidbComponentAttributesSharedDllRefCount bit não está definido e não há nenhuma contagem de referência. Assim, o instalador não inicia uma contagem de referência.
  • Um aplicativo herdado que compartilha esse componente e não usa o instalador está instalado.
  • O aplicativo herdado cria e incrementa uma contagem de referência para o componente compartilhado.
  • O aplicativo herdado é desinstalado.
  • A contagem de referência para o componente compartilhado é reduzida a zero e o componente é removido.
  • O aplicativo que usa o instalador não tem mais acesso ao componente.

Para evitar esse comportamento, defina msidbComponentAttributesSharedDllRefCount.

Observe que os componentes de serviços do sistema não devem ser especificados como executados a partir da fonte sem serem especificamente projetados para esse uso. Consulte a tabela ServiceInstall para obter mais detalhes.

Observe que os atributos que permitem a instalação a partir do código-fonte nunca devem ser definidos para componentes que contêm bibliotecas de vínculo dinâmico que estão indo para a pasta do sistema. O motivo é que, se o estado de instalação do componente for definido como executado a partir da origem seguindo um recurso ou sendo definido na interface do usuário, as chamadas subsequentes para LoadLibrary na DLL falharão.

Consulte também, Controlling Feature Selection States.

Validação

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