Al momento sei offline in attesa che la connessione Internet venga ristabilita

How to: download di DLL dipendenti in Internet Explorer con un file inf

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 165075
Sommario
Spesso è necessario scaricare DLL dipendenti con un controllo ActiveX. Controlli MFC e Visual Basic esiste tale requisito. In questo articolo verrà descritti tre modi per eseguire questa operazione.
Informazioni
Esistono tre modi per includere DLL dipendenti nel download di un controllo. Il primo modo consiste la DLL nel file CAB per il controllo insieme con i file OCX e INF. Lo svantaggio di questo è che la DLL verrà scaricata ogni volta che il controllo viene scaricato. In alcuni casi, questo è opportuno. Il successivo consiste per le DLL dipendenti in un file CAB separato del pacchetto e fare riferimento a quella nel file INF per il controllo. Il terzo metodo pacchetti anche la DLL in un file CAB separato, ma il file CAB è indicato di file INF del controllo con un hook. Utilizzo di un hook consente il processo di download eseguire un file INF o EXE contenuto nel file CAB dipendente.

Per aggiungere una dipendenza per OCX (Simpdll.dll in questo esempio), una sezione simile alla sezione per il controllo viene aggiunto alla sezione [AddCode] del file INF:
   [Add.Code]   TestDw.ocx=TestDw.ocx   simpdll.dll=simpdll.dll				
sezione viene quindi aggiunto al file INF per controllare l'installazione della DLL:
   [simpdll.dll]   FileVersion=1,0,0,1   file-win32-x86=thiscab				
è la prima modalità indicata per includere una dipendenza DLL in un download.

Per includere la DLL in un file CAB separato, che è necessario consiste nel modificare il percorso da "thiscab" all'URL in cui si troverà il file CAB dipendente:
file-Win32-x86=http://www.contoso.com/Controls/Dependent.cab
In questo caso, Simpdll.cab contiene solo simpdll.dll.

È possibile aggiungere più DLL dei file INF e CAB sopra, se necessario.

Il terzo metodo per assemblare le DLL dipendenti è fare riferimento file CAB della DLL dipendenti utilizzando un hook. Con questa tecnica, un file di INF o EXE nel file CAB dipendente può essere eseguito in fase di download.

La sezione seguente da un file inf controlla il download DLL dipendente per controlli 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				
in questo caso, in cui le DLL MFC vengono contenute in un file exe autoestraente, contenuta nel file CAB (mfc42.cab). Tuttavia, gli strumenti per rendere i file exe autoestraente non sono attualmente disponibili da Microsoft. Di conseguenza, sarà necessario DLL dipendenti con un file inf del pacchetto o il file inf nell'hook di installazione di riferimento:
   [yourinstaller]   file-win32-x86=http://example.microsoft.com/simpdll.cab   InfFile=your.inf				
OR, è necessario creare un self l'estrazione dei file EXE utilizzando strumenti di terze parti.

Per illustrare, quanto è il file inf che consente di installare le DLL MFC dipendenti. È possibile modificare questa opzione per installare la propria DLL nello stesso modo che siano installate le DLL MFC.
   ; ========================= 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 deve essere elencati nella sezione .Register se Esporta una funzione DllRegisterServer. È possibile determinare questo esaminando la DLL con utilità Dumpbin.exe del compilatore di Visual C. È inoltre possibile eseguire Regsvr32 sulla DLL, che tenta di registrare la DLL. Regsvr32 carica la DLL, verifica che DllRegisterServer viene esportato correttamente chiamando la funzione DLLRegisterServer GetProcAddress(). Se l'operazione riesce, DllRegisterServer di tipo la funzione viene esportata e viene quindi chiamato.

Tenere presente che alimentato Regsvr32 la DLL potrebbe avere effetti collaterali indesiderati. Quando viene chiamato DllRegisterServer, rende voci del Registro di sistema appropriata alla posizione della DLL nel computer. Ad esempio, digitando quanto segue in un prompt MS-DOS, per scopi di test, è causa problemi:
   copy mfc42.dll C:\Test   run "D:\msdev\bin\REGSVR32.EXE C:\Test\mfc42.dll"   delete mfc42.dll				
la volta successiva che il sistema tenta la ricerca di Mfc42.dll, Cerca il Registro di sistema, rileva che il file viene mappato a C:\Test\Mfc42.dll e non viene trovato è. Esecuzione Regsvr32 in un file che è già installato in un computer non causa problemi.

Installazione di una DLL con una funzione hook e un automatica estrazione EXE è utile per il seguente motivo: se una DLL che è necessario eseguire l'aggiornamento è già caricata in memoria, il download avrà esito negativo. Questo è un problema noto, in modo che è stato risolto in Internet Explorer versione 4.0. Internet Explorer 4.0 verrà suggerito un riavvio e caricare la DLL nuova durante il riavvio.
Riferimenti
Per ulteriori informazioni, vedere i seguenti articoli della Microsoft Knowledge Base riportato di seguito:
167158Come pacchetto MFC di controlli per l'utilizzo su Internet
167597Specificando FileVersion e # Version per download dei componenti

Per ulteriori informazioni, vedere il seguente Webcast:

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 165075 - Ultima revisione: 12/21/2006 10:11:59 - Revisione: 2.5

Microsoft Internet Explorer 3.0, Microsoft Internet Explorer 3.01, Microsoft Internet Explorer 3.02, Microsoft Internet Explorer 4.0 128-Bit Edition, 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 KbMtit
Feedback