Share via


Componentes isolados

Os autores de pacotes de instalação podem especificar que o instalador copie os arquivos compartilhados (DLLs comumente compartilhadas) de um aplicativo para a pasta desse aplicativo em vez de para um local compartilhado. Esse conjunto privado de arquivos (DLLs) é usado somente pelo aplicativo. Isolar o aplicativo junto com seus componentes compartilhados dessa maneira tem as seguintes vantagens:

  • O aplicativo sempre usa as versões dos arquivos compartilhados com os quais foi implantado.
  • A instalação do aplicativo não substitui outras versões dos arquivos compartilhados por outros aplicativos.
  • As instalações subsequentes de outros aplicativos que usam versões diferentes dos arquivos compartilhados não podem substituir os arquivos usados por este aplicativo.

Como a implementação atual do COM mantém um único caminho completo no registro para cada par CLSID/Contexto, ele força todos os aplicativos a usar a mesma versão de uma DLL compartilhada. Para permitir que um aplicativo mantenha uma cópia privada de um servidor COM, o carregador do sistema no Windows 2000 verifica a presença de um . Arquivo LOCAL na pasta do aplicativo. Se o carregador do sistema detectar um . Arquivo LOCAL, ele altera sua lógica de pesquisa para preferir DLLs localizadas na mesma pasta que o aplicativo.

Quando o Windows Installer executa a ação IsolateComponents , eles copiam os arquivos do componente (normalmente uma DLL compartilhada) especificados na coluna Component_Shared da tabela IsolatedComponent na mesma pasta que o componente (normalmente um arquivo .exe) especificado na coluna Component_Application. O instalador cria um arquivo nesse diretório, com zero bytes de comprimento, tendo o nome de arquivo curto do arquivo de chave para Component_Application (normalmente, o nome é o mesmo que o .exe do aplicativo) acrescentado com .LOCAL. O instalador usa o registro do componente em seu local compartilhado e não grava nenhuma informação de registro para a cópia do componente no local privado.

Para obter mais informações, consulte: