Afhankelijke Dll's in Internet Explorer downloaden met een. inf-bestand


Samenvatting


Het is vaak nodig om afhankelijke Dll's te downloaden samen met een ActiveX-besturingselement. Voor MFC en visuele basisbesturingselementen is dit vereist. In dit artikel wordt uitgelegd hoe u dit kunt doen.

Meer informatie


U kunt op drie manieren afhankelijke Dll's opnemen in de Download van een besturingselement. De eerste manier is om de DLL (s) van het CAB-bestand (en) voor het besturingselement samen te voegen met de bestanden OCX en INF. Het nadeel voor dit is dat de DLL wordt gedownload wanneer het besturingselement wordt gedownload. In sommige gevallen is dit geschikt. Op de volgende manier moet u de afhankelijke DLL (s) in een apart CAB-bestand inpakken en verwijzen naar die in het INF-bestand voor het besturingselement. Op de derde manier wordt de DLL ook in een apart CAB-bestand verpakt, maar het CAB-bestand verwijst naar het INF-bestand van het besturingselement met een haakje. Met behulp van een haak kan het downloadproces een INF-of EXE-bestand uitvoeren dat in het afhankelijke CAB-bestand is opgenomen. Als u een afhankelijkheid wilt toevoegen voor een OCX-bestand (Simpdll. dll in dit voorbeeld), wordt een sectie die vergelijkbaar is met de sectie voor het besturingselement toegevoegd aan de sectie [AddCode] van het INF-bestand:
   [Add.Code]   TestDw.ocx=TestDw.ocx   simpdll.dll=simpdll.dll
Vervolgens wordt er een sectie toegevoegd aan het INF-bestand om de installatie van de DLL te beheren:
   [simpdll.dll]   FileVersion=1,0,0,1   file-win32-x86=thiscab
Dit is de eerste manier die wordt vermeld voor het toevoegen van een DLL-afhankelijkheid in een download. Als u de DLL wilt opnemen in een apart CAB-bestand, moet u de locatie van ' thiscab ' wijzigen in de URL waarop het afhankelijke CAB-bestand zich bevindt:
file-win32-x86=http://www.contoso.com/controls/dependent.cab
In dit geval bevat Simpdll. cab alleen Simpdll. dll. meerdere Dll's kunnen indien nodig worden toegevoegd aan de INF-en CAB-bestanden. De derde manier voor het pakket maken van afhankelijke Dll's is het gebruik van een haakje naar het CAB-bestand van de afhankelijke DLL. Met deze methode kunt u een INF-of EXE-bestand in het afhankelijke CAB-bestand uitvoeren bij het downloaden. In het volgende gedeelte van een inf-bestand wordt de afhankelijke DLL-Download voor besturingselementen voor MFC beheerd:
   [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 dat deel uitmaakt van het CAB-bestand (Mfc42. cab). De hulpmiddelen voor het maken van zelfuitpakkende exe-bestanden zijn op dit moment niet beschikbaar in Microsoft. Daarom moet u afhankelijke Dll's inpakken met een inf-bestand of een verwijzing maken naar het inf-bestand in het installatie haakje:
   [yourinstaller]   file-win32-x86=http://example.microsoft.com/simpdll.cab   InfFile=your.inf
U moet ook een zelfuitpakkend EXE-bestand maken met behulp van hulpprogramma's van derden. Om te illustreren, is het volgende het inf-bestand dat wordt gebruikt om de afhankelijke MFC-Dll's te installeren. U kunt dit wijzigen om uw eigen Dll's te installeren op dezelfde manier als de MFC-Dll's worden 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 moet worden vermeld in de sectie. register als de functie een DllRegisterServer-functie exporteert. Dit kan worden bepaald door de DLL te onderzoeken met het hulpprogramma DUMPBIN. exe van Visual C. U kunt ook regsvr32 in de DLL uitvoeren om de DLL te registreren. Met regsvr32 wordt de DLL geladen en wordt gecontroleerd of DllRegisterServer correct wordt geëxporteerd door GetProcAddress () te bellen met de functie DLLRegisterServer. Als dit slaagt, wordt de functie DllRegisterServer geëxporteerd en vervolgens aangeroepen. Houd er rekening mee dat het uitvoeren van regsvr32 in de DLL mogelijk ongewenste bijwerkingen heeft. Wanneer DllRegisterServer wordt aangeroepen, wordt de juiste registervermeldingen aangewezen voor de DLL-locatie op de computer. Als u bijvoorbeeld het volgende typt in een MS-DOS-prompt, kan voor testdoeleinden het volgende problemen veroorzaken:
   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 in het register gezocht naar het bestand dat is toegewezen aan C:\Test\Mfc42.dll en wordt het niet gevonden. Het uitvoeren van regsvr32 voor een bestand dat al op een computer is geïnstalleerd, veroorzaakt geen problemen. Wanneer u een DLL-bestand installeert met een haak en een self-uitpakprogramma, is het handig om de volgende reden te downloaden, mislukt het downloaden. Dit is een bekend probleem, dat is opgelost in Internet Explorer versie 4,0. In Internet Explorer 4,0 wordt een nieuwe versie opnieuw gestart en wordt de nieuwe DLL geladen wanneer u de computer opnieuw opstart.

Verwijzingen


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