Stiahnutie závislých knižníc DLL v Internet Exploreri so súborom. inf

Súhrn

Je často potrebné stiahnuť závislé knižnice DLL spolu s ovládacím prvkom ActiveX. Ovládacie prvky MFC a Visual Basic majú túto požiadavku. V tomto článku sa vysvetľujú tri spôsoby, ktoré môžete vykonať.

Ďalšie informácie

Existujú tri spôsoby, ako zahrnúť závislé knižnice DLL do súboru na stiahnutie pre ovládací prvok. Prvý spôsob je zahrnúť knižnice DLL do súboru CAB pre ovládací prvok spolu so súbormi OCX a INF. Nevýhodou je to, že knižnica DLL sa stiahne vždy, keď sa ovládací prvok stiahne. V niektorých prípadoch je to vhodné. Ďalším spôsobom je zbaliť závislé knižnice DLL v samostatnom súbore CAB a odkazovať na súbor v súbore INF pre ovládací prvok. Tretí spôsob balenia knižnice DLL do samostatného súboru CAB, ale súbor CAB je uvedený v súbore INF ovládacieho prvku s hákom. Pomocou háku umožňuje proces sťahovania spustiť súbor INF alebo EXE obsiahnutý v závislom súbore CAB. Ak chcete v tomto príklade pridať závislosť pre OCX (Simpdll. dll), do sekcie [AddCode] súboru INF sa pridá sekcia podobná časti pre ovládací prvok:

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

Časť sa potom pridá do súboru INF na ovládanie inštalácie knižnice DLL:

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

Toto je prvý spôsob, ako sa zmienil o tom, že do sťahovania patrí závislosť DLL. Ak chcete zahrnúť knižnicu DLL do samostatného súboru CAB, všetko, čo je potrebné, je zmeniť umiestnenie zo stránky "thiscab" na URL adresu, na ktorej sa závislá KABÍNa nachádza:

file-win32-x86=http://www.contoso.com/controls/dependent.cabV tomto prípade Simpdll. cab obsahuje len Simpdll. dll. v prípade potreby je možné do súborov INF a CAB pridať viacero knižníc DLL. Tretí spôsob balenia závislých knižníc DLL je odkazovať na súbor CAB závislej knižnice DLL s použitím háku. Pomocou tejto techniky sa súbor INF alebo EXE v závislej KABÍNe môže spustiť pri preberaní. V nasledujúcej časti súboru. inf sa ovláda prevzatie závislej knižnice DLL pre ovládacie prvky 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

V tomto prípade sú MFC DLL zabalené v súbore samorozbaľovací. exe, ktorý je obsiahnutý v súbore. cab (Mfc42. cab). Nástroje na vytváranie samorozbaľovací súborov. exe však nie sú momentálne k dispozícii od spoločnosti Microsoft. Z tohto dôvodu budete musieť balík s príponou. inf zbaliť alebo odkazovať na súbor. inf v inštalačnom háku:

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

Prípadne bude potrebné vytvoriť samorozbaľovací súbor EXE pomocou nástrojov tretích strán. Na ilustráciu je uvedený súbor. inf, ktorý sa používa na inštaláciu súborov DLL závislých na MFC. Túto možnosť môžete upraviť na inštaláciu vlastných knižníc DLL rovnakým spôsobom, ako sú nainštalované MFC knižnice DLL.

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

Knižnica DLL musí byť uvedená v časti. register, ak exportuje funkciu DllRegisterServer. Túto možnosť možno určiť preskúmaním knižnice DLL pomocou nástroja Visual C compiler ' s DUMPBIN. exe. Príkaz regsvr32 môžete spustiť aj v knižnici DLL, ktorá sa pokúša zaregistrovať knižnicu DLL. Príkaz regsvr32 načíta knižnicu DLL, overí, že funkcia DllRegisterServer sa správne exportuje volaním GetProcAddress () na funkciu DLLRegisterServer. Ak sa to podarí, Funkcia DllRegisterServer sa exportuje a potom sa nazýva. Pamätajte však, že spustenie nástroja Regsvr32 v knižnici DLL môže mať nežiaduce vedľajšie účinky. Keď sa nazýva DllRegisterServer, príslušné položky databázy Registry sa odkazujú na umiestnenie knižnice DLL v počítači. Ak napríklad zadáte do príkazového riadka systému MS-DOS, na účely testovania môže spôsobovať problémy:

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

Pri ďalšom spustení sa systém pokúsi vyhľadať Mfc42. dll, vyhľadá databázu Registry, zistí, že súbor je priradený k C:\Test\Mfc42.dll a nenájde ho tam. Spustenie nástroja Regsvr32 na súbor, ktorý je už nainštalovaný v počítači, nespôsobuje problémy. Inštalácia knižnice DLL s hákom a samorozbaľovací EXE je užitočná z tohto dôvodu: Ak je knižnica DLL, ktorú je potrebné inovovať, už načítaná v pamäti, sťahovanie sa nepodarí. Toto je známy problém, ktorý bol vyriešený v Internet Exploreri verzie 4,0. Internet Explorer 4,0 navrhne reštart a načíta novú knižnicu DLL počas reštartu.

Odkazy

Ďalšie informácie nájdete v nasledujúcich článkoch databázy Microsoft Knowledge Base:

Ako zbaliť ovládacie prvky MFC na používanie cez Internet

Určenie FileVersion a #Version na stiahnutie súčastíĎalšie informácie nájdete v týchto Webcast:

Potrebujete ďalšiu pomoc?

Rozšírte svoje zručnosti
Preskúmať školenie
Buďte medzi prvými, ktorí získajú nové funkcie
Pripojiť k Microsoft insiderov chcú

Považujete poskytnuté informácie za užitočné?

Ďakujem za vaše pripomienky!

Ďakujeme vám za pripomienky. Pravdepodobne vám pomôže, ak vás spojíme s pracovníkom podpory pre Office.

×