Kuidas alla laadida sõltuvaid dll-e Internet Exploreris INF-failiga

Kokkuvõte

Sageli on vaja alla laadida sõltuvaid dll-e koos ActiveX-juhtelemendiga. MFC ja Visual põhijuhtelementidel on see nõue. Selles artiklis selgitatakse kolme võimalust, mida saate teha.

Lisateave

Juhtelementi allalaadimiseks on kolm võimalust, kuidas kaasata sõltuvaid DLL-i. Esimene viis on kaasata DLL (ID) CAB-faili juhtelementi ning OCX ja INF-failid. Selle langusriskid on see, et DLL laaditakse alla iga kord, kui juhtelement alla laaditakse. Mõnel juhul on see sobiv. Järgmine viis on eraldada sõltuvaid DLL-e eraldi CAB-failis ja viidata selle juhtelementi INF-failis. Kolmas võimalus on ka pakkida DLL eraldi CAB-faili, kuid CAB-faili nimetatakse juhtelementi INF-failis konksuga. Konksu abil saab alla laadida faili INF-või EXE-faili, mis sisaldub sõltuvas CAB-failis. OCX-i (Simpdll. dll) sõltuvuse lisamiseks (selles näites) lisatakse INF-faili jaotisse [AddCode] vastava jaotise juhtelement.

   [Add.Code]   TestDw.ocx=TestDw.ocx   simpdll.dll=simpdll.dll

Seejärel lisatakse jaotis INF-faili, et juhtida DLL-i installi.

   [simpdll.dll]   FileVersion=1,0,0,1   file-win32-x86=thiscab

See on esimene viis, mis oli märgitud, et lisada DLL-i sõltuvus allalaadimisest. Kui soovite DLL-i lisada eraldi CAB-faili, on vaja muuta asukohta "thiscab" URL-iks, kus asub sõltuv kabiin.

file-win32-x86=http://www.contoso.com/controls/dependent.cabSel juhul sisaldab Simpdll. cab ainult Simpdll. dll. mitu DLL-i saab vajadusel lisada ka INF-ja CAB-failidele. Kolmas viis paketti sõltuvate dll-teekide kasutamiseks on viidata sõltuvale DLL-i CAB-failile konksu abil. Seda tehnikat kasutades saab faili INF või EXE sõltuva KABIINi kaudu alla laadida. Järgmine jaotis INF-faili juhtelementidest sõltub MFC-juhtelementide allalaadimisest sõltuvale DLL-ile.

   [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

Sel juhul on MFC DLL-failid pakitud iseavanev. exe faili, mis sisaldub CAB-failis (mfc42. cab). Siiski ei ole Microsoftist praegu saadaval tööriistu, mille abil saab iseavanev exe-failid praegu kättesaadavaks teha. Seetõttu on teil vaja pakkida sõltuvaid DLLs-faile INF-failidega või viide INF-i versioonile installi konksul:

   [yourinstaller]   file-win32-x86=http://example.microsoft.com/simpdll.cab   InfFile=your.inf

Või peate koostama iseavanev EXE-faili kolmanda osapoole tööriistade abil. Illustreerimiseks on see INF-failid, mida kasutatakse sõltuvate MFC DLL-failide installimiseks. Saate seda muuta oma dll-teekide installimiseks samamoodi, nagu on installitud MFC DLLs.

   ; ========================= 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 ======================

Kui ekspordite funktsiooni DllRegisterServer, peab DLL olema loetletud jaotises register. Selle saab kindlaks teha, uurides DLL-i Visual C kompilaatori DUMPBIN. exe abil. Saate käivitada tööriista Regsvr32 ka DLL-is, mis proovib DLL-i registreerida. Regsvr32 laadib DLL-i, kontrollib, kas DllRegisterServer on õigesti eksporditud GetProcAddress () funktsiooni DLLRegisterServer abil. Kui see õnnestub, eksporditakse funktsioon DllRegisterServer ja seejärel helistatakse. Olge ettevaatlik, et tööriista Regsvr32 operatsioonisüsteemis DLL võib olla soovimatud kõrvalmõjud. Kui DllRegisterServer on kutsutud, teeb see õigeid registrikannete, osutades seadmes olevale DLL-asukohale. Kui soovite näiteks tippida MS-DOS-i viibale järgmisi juhiseid, võib see põhjustada probleeme.

   copy mfc42.dll C:\Test   run "D:\msdev\bin\REGSVR32.EXE C:\Test\mfc42.dll"   delete mfc42.dll

Järgmine kord, kui süsteem proovib otsida Mfc42. dll, otsib register üles, leiab, et fail on vastendatud C:\Test\Mfc42.dll ja ei leia seda seal. Tööriista Regsvr32 käitamine seadmes, mis on juba arvutisse installitud, ei põhjusta probleeme. DLL-i installimine konksuga ja iseavanev EXE on kasulik järgmisel põhjusel: kui täiendamiseks vajalik DLL on juba mälus laaditud, siis allalaadimine nurjub. Tegemist on teadaoleva probleemiga, mis on lahendatud Internet Exploreri versioonis 4,0. Internet Explorer 4,0 soovitab taaskäivitada ja laadida uuesti uue DLL-i.

Viited

Lisateabe saamiseks lugege järgmisi Microsofti teabebaasi artikleid:

MFC-juhtelementide pakettide kasutamine Interneti kaudu

FileVersion ja #Version määramine komponendi allalaadimiseksLisateavet leiate järgmistest veebiülekannetest.

Kas vajate veel abi?

Täiendage oma oskusi
Tutvuge koolitusmaterjalidega
Kasutage uusi funktsioone enne teisi
Liitu Microsofti Insideri programmis osalejad

Kas sellest teabest oli abi?

Täname tagasiside eest!

Täname tagasiside eest! Tundub, et võiksime teid kokku viia ühega meie Office'i tugiagentidest, kes aitab teil probleemi lahendada.

×