Gewusst wie: abhängige DLLs in Internet Explorer mit einer INF-Datei herunterladen

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 165075 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Zusammenfassung

Es ist häufig erforderlich, abhängigen DLLs zusammen mit einem ActiveX-Steuerelement zu downloaden. MFC- und Visual Basic-Steuerelemente ist diese Anforderung. In diesem Artikel werden drei Möglichkeiten erläutert, dass Sie dies tun können.

Weitere Informationen

Es gibt drei Möglichkeiten, die abhängigen DLLs in der Download für ein Steuerelement aufgenommen werden sollen. Die erste Möglichkeit ist die DLLs in die CAB-Datei für das Steuerelement zusammen mit den OCX und INF-Dateien aufnehmen. Der Nachteil dieser ist, dass die DLL jedes Mal gedownloadet werden das Steuerelement gedownloadet wird. In einigen Fällen ist dieses geeignet. Die nächste Möglichkeit besteht abhängigen DLLs in einer separaten CAB-Datei packen und auf, in der INF-Datei für das Steuerelement verweisen. Die dritte Möglichkeit Pakete auch die DLL in einer separaten CAB-Datei, aber die CAB-Datei wird in das Steuerelement INF-Datei mit einem Häkchen bezeichnet. Verwenden einen Hook ermöglicht dem Downloadprozess zum Ausführen einer in der abhängigen CAB-Datei enthaltenen INF oder EXE-Datei.

Eine Abhängigkeit für eine OCX (in diesem Beispiel Simpdll.dll) hinzufügen möchten, ist ein Abschnitt ähnlich wie in den Abschnitt für das Steuerelement mit dem Abschnitt [AddCode] der INF-Datei hinzugefügt:
   [Add.Code]
   TestDw.ocx=TestDw.ocx
   simpdll.dll=simpdll.dll
				
dann wird ein Abschnitt zur INF-Datei zur Steuerung der Installation der DLL hinzugefügt:
   [simpdll.dll]
   FileVersion=1,0,0,1
   file-win32-x86=thiscab
				
Dies ist die erste Möglichkeit erwähnt, um eine DLL-Abhängigkeit in einen Download einzuschließen.

Die DLL in einer separaten CAB-Datei aufnehmen möchten, ist, den Speicherort von "Thiscab" Ändern der URL, an dem die abhängige CAB-Datei gespeichert werden:
File-Win32-x86=http://www.contoso.com/Controls/Dependent.CAB
In diesem Fall enthält Simpdll.cab nur simpdll.dll.

Mehrere DLLs können die INF und CAB-Dateien über bei Bedarf hinzugefügt werden.

Die dritte Möglichkeit, die abhängigen DLLs Paket ist, auf die abhängige DLL CAB-Datei über einen Hook. Mit dieser Technik kann eine INF oder EXE-Datei in der abhängigen CAB-Datei auf Download ausgeführt werden.

Der folgende Abschnitt einer INF-Datei steuert der abhängigen DLL-Download für MFC-Steuerelemente:
   [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 diesem Fall werden die MFC-DLLs gepackt, in eine selbstextrahierende EXE-Datei, die in der CAB-Datei (mfc42.cab) enthalten ist. Tools für die selbstextrahierende EXE-Dateien sind jedoch nicht aktuell von Microsoft. Daher werden Sie entweder müssen abhängige DLLs mit einer INF-Datei packen oder verweisen auf die INF-Datei in der Installation Hook:
   [yourinstaller]
   file-win32-x86=http://example.microsoft.com/simpdll.cab
   InfFile=your.inf
				
oder müssen Sie das Erstellen einer selbstextrahierenden exe-Datei mithilfe von Tools von Drittanbietern.

Um zu veranschaulichen, wird folgender der INF-Datei verwendet, um die abhängige MFC-DLLs zu installieren. Sie können Sie ändern, Ihre eigenen DLLs in die gleiche Weise installieren, dass die MFC-DLLs installiert sind.
   ; ========================= 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 ======================
				
eine DLL muss im Abschnitt .Register aufgeführt werden, wenn es eine Funktion DllRegisterServer exportiert. Dies kann durch Untersuchen der DLL mit der Visual C++-Compiler DUMPBIN.exe Dienstprogramm ermittelt werden. Sie können auch Regsvr32 für die DLL ausführen, die versucht, die DLL zu registrieren. Regsvr32 lädt die DLL, überprüft, dass DllRegisterServer ordnungsgemäß durch Aufrufen von GetProcAddress() für die DLLRegisterServer-Funktion exportiert wird. Wenn es erfolgreich ist, die Funktion DllRegisterServer wird exportiert und anschließend aufgerufen.

Beachten Sie, dass Regsvr32 auf die DLL ausgeführt unerwünschte Nebeneffekte haben. Wenn DllRegisterServer aufgerufen wird, erleichtert entsprechenden Registrierungseinträge auf den DLL-Speicherort auf dem Computer verweist. Beispielsweise Probleme verursachen kann in einer MS-DOS-Eingabeaufforderung für Testzwecke, Folgendes eingeben:
   copy mfc42.dll C:\Test
   run "D:\msdev\bin\REGSVR32.EXE C:\Test\mfc42.dll"
   delete mfc42.dll
				
das nächste Mal das System versucht, Mfc42.dll, suchen Sie eine Sicherungskopie der Registrierung sucht, feststellt, dass die Datei C:\Test\Mfc42.dll zugeordnet ist und nicht es gefunden. Regsvr32 auf eine Datei, die bereits, auf einem Computer installiert ist ausgeführten verursacht keine Probleme.

Installieren von eine DLL mit einen Hook und einer selbstextrahierenden EXE eignet aus folgendem Grund: Wenn eine DLL, die aktualisiert werden muss bereits im Speicher geladen wird, der Download fehl. Dies ist ein bekanntes Problem, die in Internet Explorer, Version 4.0 behoben wurde. Internet Explorer 4.0 wird vorgeschlagen, einen Neustart und die neue DLL laden, während des Neustarts.

Informationsquellen

Weitere Informationen finden Sie in die folgenden Artikeln der Microsoft Knowledge Base:
167158Von Paket MFC-Steuerelemente für die Verwendung über das Internet
167597Angeben von FileVersion und # Version für Komponentendownload

Weitere Informationen finden Sie folgende Webcast:
How Does Internet Component Download Work?

Eigenschaften

Artikel-ID: 165075 - Geändert am: Donnerstag, 21. Dezember 2006 - Version: 2.5
Die Informationen in diesem Artikel beziehen sich auf:
  • 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
Keywords: 
kbmt kbcode kbdownload kbfaq kbhowto KB165075 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 165075
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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