Compartilhar via


Tabela SelfReg

A tabela SelfReg contém informações sobre módulos que precisam ser autorregistrados. O instalador chama a função DllRegisterServer durante a instalação do módulo; e chama DllUnregisterServer durante a desinstalação do módulo. O instalador não registra automaticamente os arquivos EXE.

A tabela SelfReg tem as colunas a seguir.

Coluna Tipo Chave Nullable
File_ Identificador S N
Custo Inteiro N S

 

Colunas

File_

Chave externa na primeira coluna da tabela File indicando o módulo que precisa ser registrado.

Cost

O custo de registrar o módulo em bytes. Precisa ser um número não negativo.

Comentários

Os criadores do pacote de instalação são altamente aconselhados a não usar autorregistro. Em vez disso, eles devem registrar módulos criando uma ou mais tabelas fornecidas pelo instalador para essa finalidade. Para obter mais informações, confira Grupo de Tabelas Registry. Muitos dos benefícios de se ter um serviço central de instalador são perdidos com o registro automático, porque as rotinas de registro automático tendem a ocultar informações críticas de configuração. Os motivos para se evitar o autorregistro incluem:

  • A reversão de uma instalação com módulos autorregistrados não pode ser feita com segurança usando DllUnregisterServer porque não há como dizer se as chaves autorregistradas são usadas por outro recurso ou aplicativo.
  • A capacidade de usar o anúncio será reduzida se o registro de servidor de classe ou extensão for executado dentro de rotinas de autorregistro.
  • O instalador manipula automaticamente as chaves HKCR nas tabelas de registro para instalações por usuário ou por computador. Atualmente, as rotinas DllRegisterServer não dão suporte à noção de uma chave HKCR por usuário.
  • Se vários usuários estiverem usando um aplicativo autorregistrado no mesmo computador, cada usuário deverá instalar o aplicativo na primeira vez que o executar. Caso contrário, o instalador não poderá determinar facilmente se as chaves de registro HKCU adequadas existem.
  • O DllRegisterServer poderá ter acesso negado aos recursos de rede, como bibliotecas de tipos, se um componente for especificado como run-from-source e estiver listado na tabela SelfReg. Isso pode fazer com que a instalação do componente falhe durante uma instalação administrativa.
  • As DLLs de autorregistro são mais suscetíveis a erros de codificação porque o novo código necessário para DllRegisterServer geralmente é diferente para cada DLL. Em vez disso, use as tabelas de registro no banco de dados para aproveitar o código existente fornecido pelo instalador.
  • Às vezes, as DLLs de autorregistro podem se vincular a DLLs auxiliares que não estejam presentes ou que sejam a versão errada. Por outro lado, o instalador pode registrar as DLLs usando as tabelas de registro sem dependência do estado atual do sistema.

Observação

Você não pode especificar a ordem na qual o instalador registra ou cancela o registro automático de DLLs usando as ações SelfRegModules e SelfUnRegModules. Consulte Especificar a ordem de registro automático.

 

Validação

ICE03
ICE06
ICE32