Afhankelijke DLL's in Internet Explorer met een INF-bestand downloaden

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 165075 - Bekijk de producten waarop dit artikel van toepassing is.
Alles uitklappen | Alles samenvouwen

Samenvatting

Is het vaak nodig samen met een ActiveX-afhankelijke DLL's downloaden Besturings element. MFC en Visual Basic-besturingselementen hebben deze eis. In dit artikel wordt uitgelegd dat u dit kunt doen op drie manieren.

Meer informatie

Er zijn drie manieren om afhankelijke DLL's zijn in de download voor een besturings element. De eerste manier is de DLL(s) opgenomen in het CAB-bestand voor de bepalen samen met de OCX- en inf-bestanden. Het nadeel hiervan is dat de DLL-bestand worden gedownload wanneer die het besturings element wordt gedownload. In sommige gevallen Dit is relevant. De volgende manier is de afhankelijke DLL(s) in een pakket een afzonderlijke CAB-bestand en die in het INF-bestand voor het besturings element verwijzen. Het derde manier ook het dll-bestand in een CAB-bestand voor afzonderlijke pakketten, maar wordt het CAB-bestand als bedoeld in het INF-bestand van het besturings element met een haakje. Met behulp van een haak. kan de proces voor het uitvoeren van een INF-bestand of het EXE-bestand van de afhankelijke downloaden CAB-bestand.

Een afhankelijkheid toevoegen voor een OCX (Simpdll.dll in dit voorbeeld), een sectie vergelijkbaar met de sectie voor het besturings element wordt toegevoegd aan de sectie [AddCode] het INF-bestand:
   [Add.Code]
   TestDw.ocx=TestDw.ocx
   simpdll.dll=simpdll.dll
				
Vervolgens wordt een punt toegevoegd aan het INF-bestand waarmee de installatie van de DLL-BESTAND:
   [simpdll.dll]
   FileVersion=1,0,0,1
   file-win32-x86=thiscab
				
Dit is de eerste manier vermeld moeten de afhankelijkheid van een DLL-bestand downloaden.

Het dll-bestand in een aparte CAB-bestand opnemen, die nodig is Wijzig de locatie van "thiscab" in de URL waarmee de afhankelijke CAB-bestand zal worden geplaatst:
File-Win32-x86=http://www.contoso.com/Controls/dependent.cab
In dit geval bevat Simpdll.cab alleen simpdll.dll.

Meerdere dll-bestanden kunnen worden toegevoegd aan de inf- en cab-bestanden hierboven indien nodig.

De derde manier om afhankelijke DLL's pakket is om te verwijzen naar de afhankelijke DLL CAB-bestand met behulp van een haak. Met deze techniek een INF-bestand of EXE bestand in de afhankelijke CAB-bestand kan worden uitgevoerd op downloaden.

De volgende sectie van INF-bestand bepaalt de afhankelijke DLL downloaden voor MFC-besturingselementen:
   [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 dit geval zijn de MFC DLL's verpakt in een zelfuitpakkend exe-bestand waar bevindt zich in het CAB-bestand (mfc42.cab). Echter, extra maken zelf-uitpakkende exe-bestanden zijn momenteel niet beschikbaar bij Microsoft. Daarom moet u afhankelijke DLL's inpakken met een INF-bestand of verwijzen naar het INF-bestand in de installatie haak:
   [yourinstaller]
   file-win32-x86=http://example.microsoft.com/simpdll.cab
   InfFile=your.inf
				
Of moet u een EXE-bestand met behulp van derden extraheren zelf bouwen hulp programma's.

Ter illustratie is het volgende het INF-bestand gebruikt om de afhankelijke installeren MFC-dll's. U kunt dit zelf DLL's installeren op dezelfde manier wijzigen dat de MFC-dll's zijn geïnstalleerd.
   ; ========================= 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 ======================
				
Een DLL-bestand moet worden weer gegeven in het gedeelte .register als deze uitvoer een DllRegisterServer-functie. Dit kan worden bepaald door het onderzoeken van het dll-bestand met de Visual C compiler Dumpbin.exe programma. U kunt ook uitvoeren Regsvr32 op de DLL, wordt geprobeerd de DLL te registreren. Regsvr32 wordt geladen het dll-bestand, verifieert dat DllRegisterServer correct wordt geëxporteerd door te bellen GetProcAddress () op de DLLRegisterServer-functie. Als dit lukt, de DllRegisterServer-functie wordt uitgevoerd en vervolgens wordt genoemd.

Wees voorzichtig, echter dat Regsvr32 waarop het dll-bestand mogelijk ongewenste neveneffecten. Wanneer DllRegisterServer wordt aangeroepen, wordt het juiste registervermeldingen die verwijzen naar de locatie van het dll-bestand op de computer. Bijvoorbeeld: Typ het volgende in een MS-DOS-prompt, kunnen voor test doeleinden veroorzaken problemen:
   copy mfc42.dll C:\Test
   run "D:\msdev\bin\REGSVR32.EXE C:\Test\mfc42.dll"
   delete mfc42.dll
				
De volgende keer dat het systeem probeert te zoeken naar Mfc42. dll, wordt opgezocht de register, constateert dat het bestand is toegewezen aan C:\Test\Mfc42.dll, en niet Er vinden. Regsvr32 uitgevoerd op een bestand dat al is geïnstalleerd op een machine veroorzaakt geen problemen.

Een DLL-bestand met een haak en een EXE uitpakken zelf installeren is handig voor het volgende reden: als een DLL-bestand dat moet worden bijgewerkt nog wordt geladen geheugen, het downloaden mislukt. Dit is een bekend probleem, is opgelost in Internet Explorer versie 4. 0. Internet Explorer 4. 0 wordt voorgesteld. een reboot en laden tijdens het opstarten de nieuwe DLL.

Referenties

Zie de volgende artikelen in de Microsoft Knowledge Base voor meer informatie:
167158Het pakket MFC-besturingselementen voor gebruik via het Internet
167597FileVersion en # Version opgeven voor het downloaden van onderdelen

Zie de volgende Webcast voor meer informatie:
Hoe Internet Component werk downloaden?

Eigenschappen

Artikel ID: 165075 - Laatste beoordeling: woensdag 28 september 2011 - Wijziging: 4.0
De informatie in dit artikel is van toepassing op:
  • Windows Internet Explorer 8
  • Windows Internet Explorer 8 on Windows Server
Trefwoorden: 
kbcode kbdownload kbfaq kbhowto kbmt KB165075 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende:165075

Geef ons feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com