Você está offline; aguardando reconexão

Como baixar DLLs dependentes no Internet Explorer com um arquivo .inf

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 165075
Sumário
Geralmente é necessário baixar DLLs dependentes juntamente com um controle ActiveX. Controles MFC e o Visual Basic têm esse requisito. Este artigo explicará três maneiras que você pode fazer isso.
Mais Informações
Existem três maneiras de incluir DLLs dependentes no download de um controle. A primeira maneira é incluir o DLL(s) no arquivo CAB para o controle junto com os arquivos INF e OCX. A desvantagem dessa é que a DLL será baixada sempre que o controle é baixado. Em alguns casos, isso é apropriado. A maneira próxima é o DLL(s) dependentes em um arquivo separado do CAB do pacote e referir-se no arquivo INF para o controle. A terceira forma pacotes também a DLL em um arquivo CAB separado, mas o arquivo CAB é mencionado no arquivo de INF do controle com um cabo. Usar um cabo permite que o processo de download executar um arquivo INF ou o EXE contido no arquivo CAB dependente.

Para adicionar uma dependência para um OCX (Simpdll.dll neste exemplo), uma seção semelhante à seção do controle é adicionada à seção [AddCode] do arquivo INF:
   [Add.Code]   TestDw.ocx=TestDw.ocx   simpdll.dll=simpdll.dll				
uma seção, em seguida, é adicionada ao arquivo INF para controlar a instalação da DLL:
   [simpdll.dll]   FileVersion=1,0,0,1   file-win32-x86=thiscab				
essa é a primeira maneira mencionada para incluir uma dependência DLL em um download.

Para incluir a DLL em um arquivo CAB separado, tudo o que é necessário é alterar o local de "thiscab" para a URL na qual o CAB dependente será localizado:
File-Win32-x86=http://www.contoso.com/Controls/Dependent.cab
Nesse caso, Simpdll.cab contém somente simpdll.dll.

Várias DLLs podem ser adicionadas aos arquivos INF e CAB acima, se necessário.

A terceira maneira DLLs dependentes do pacote é consultar CAB arquivo a DLL dependente usando um cabo. Com essa técnica, um arquivo INF ou o EXE no CAB dependente pode ser executado em download.

A seção a seguir de um arquivo .inf controla o download DLL dependente para controles MFC:
   [Add.Code]   ...   msvcrt.dll=msvcrt.dll   mfc42.dll=mfc42.dll   olepro32.dll=olepro32.dll   [msvcrt.dll]   FileVersion=4,20,0,6164   hook=mfc42installer   ...   [mfc42installer]   file-win32-x86=http://activex.microsoft.com/controls/vc/mfc42.cab   run=%EXTRACT_DIR%\mfc42.exe				
nesse caso, as DLLs de MFC são compactadas em um arquivo .exe de extração automática, que está contido no arquivo .cab (mfc42.cab). No entanto, ferramentas para tornar arquivos .exe auto-extraível não estão atualmente disponíveis na Microsoft. Portanto, você irá precise DLLs dependentes do pacote com um arquivo .inf ou referência ao arquivo .inf no gancho instalação:
   [yourinstaller]   file-win32-x86=http://example.microsoft.com/simpdll.cab   InfFile=your.inf				
ou, você precisará criar um auto extrair o arquivo EXE usando ferramentas de terceiros.

Para ilustrar, o seguinte é o arquivo .inf usado para instalar as DLLs dependentes do MFC. Você pode modificar para instalar suas próprias DLLs da mesma maneira que as DLLs de MFC estão instaladas.
   ; ========================= Mfc42.inf =========================   ; This file will control the download of the MFC 4.2 DLLs   [version]   ; version signature (same for both NT and Win95) do not remove   signature="$CHICAGO$"   AdvancedINF=2.0   [SourceDisksNames]   ; This section specifies that all sources are in the "default"   ; location.   1="default",,1   [DefaultInstall]   ; Default section to process and copy all files under the section   ; mfcdllsx.files and Register DLLs under the section mfcdllsx.register.   CopyFiles=mfcdllsx.files   RegisterOCXs=mfcdllsx.register   [DestinationDirs]   ; Destination Directories for CopyFiles Sections.   ; 11 indicates LDID_SYS - system directory   mfcdllsx.files=11   [mfcdllsx.files]   ; ,,,32 - Suppress version conflict dialog and don't overwrite newer   ; DLLs   msvcrt.dll,,,32   mfc42.dll,,,32   olepro32.dll,,,32   [mfcdllsx.register]   ; msvcrt.dll is not self registering   %11%\mfc42.dll   %11%\olepro32.dll   ; ====================== Mfc42.inf ======================				
A DLL precisa ser listados na seção .Register se ele exporta uma função DllRegisterServer. Isso pode ser determinado examinando a DLL com dumpbin.exe utilitário do compilador Visual C. Você também pode executar Regsvr32 na DLL, que tenta registrar a DLL. Regsvr32 carrega a DLL, verifica que DllRegisterServer corretamente é exportada chamando GetProcAddress() na função DLLRegisterServer. Se tiver êxito, a função DllRegisterServer é exportado e, em seguida, é chamado.

No entanto, saiba que executando Regsvr32 na DLL pode ter efeitos colaterais indesejáveis. Quando DllRegisterServer é chamado, ele faz entradas de registro apropriadas apontando para o local da DLL no computador. Por exemplo, digitando o seguinte em um prompt do MS-DOS, para fins de teste, pode causar problemas:
   copy mfc42.dll C:\Test   run "D:\msdev\bin\REGSVR32.EXE C:\Test\mfc42.dll"   delete mfc42.dll				
a próxima vez que o sistema tenta procurar Mfc42.dll, ele procura o registro, localiza o arquivo é mapeado para C:\Test\Mfc42.dll e não localizá-lo não existe. Executando o Regsvr32 em um arquivo que já está instalada em uma máquina não causará problemas.

Instalando uma DLL com um cabo e um auto EXE de extração é útil pelo seguinte motivo: se uma DLL que precisa ser atualizado já está carregada na memória, o download falhará. Este é um problema conhecido, que foi corrigido no Internet Explorer versão 4.0. Internet Explorer 4.0 irá sugerir uma reinicialização e carregar a DLL nova durante a reinicialização.
Referências
Para obter informações adicionais, leia os seguintes artigos na Base de dados de Conhecimento da Microsoft:
167158Como controles MFC do pacote para uso pela Internet
167597Especificando FileVersion e #Version para download de componente

Para obter mais informações, consulte o seguinte Webcast:

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 165075 - Última Revisão: 12/21/2006 10:11:59 - Revisão: 2.5

Microsoft Internet Explorer 3.0, Microsoft Internet Explorer 3.01, Microsoft Internet Explorer 3.02, Microsoft Internet Explorer 4.0 Edição de 128 Bits, Microsoft Internet Explorer 5.0, Microsoft Internet Explorer 5.5, Windows Internet Explorer 8, Windows Internet Explorer 8 on Windows Server

  • kbmt kbcode kbdownload kbfaq kbhowto KB165075 KbMtpt
Comentários