Internet Explorer'da bir .inf dosyası, bağımlı DLL yükleme nasıl kullanılır

Makale çevirileri Makale çevirileri
Makale numarası: 165075 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Özet

Genellikle, bir ActiveX denetimi ile birlikte, bağımlı dll'i karşıdan yüklemek gereklidir. MFC ve Visual Basic denetimleri bu gereksinimi vardır. Bu makalede, bunu yapmak için üç yolu açıklanmaktadır.

Daha fazla bilgi

Karşıdan yüklemeyi Denetim için bağımlı DLL'lerin eklemek için üç yolu vardır. Ilk yöntem OCX ve INF dosyaları ile birlikte bir denetimin CAB dosyası DLL(s) eklemektir. Bu downside DLL her denetimin karşıdan yüklenecek ' dir. Bazı durumlarda, bu uygundur. Sonraki ayrı bir CAB dosyasına bağımlı olan DLL(s) paketini ve denetim için INF dosyası için başvuru yoludur. Üçüncü bir yol da, DLL ayrı bir CAB dosyasında paketler, ancak denetimin INF dosyasında bir kanca CAB dosyasının denir. Bir kanca kullanarak bağımlı CAB dosyasının içerdiği bir INF veya EXE dosyası yürütmek karşıdan yükleme işlemi sağlar.

Bir OCX (Bu örnekte Simpdll.dll) için bir bağımlılık eklemek için <a0></a0>, denetimin bölümüne benzer bir bölümü INF dosyasının [AddCode] bölümüne eklenir:
   [Add.Code]
   TestDw.ocx=TestDw.ocx
   simpdll.dll=simpdll.dll
				
BIR bölümü daha sonra dll DOSYASıNıN yüklemesini denetlemek için INF dosyası eklenir:
   [simpdll.dll]
   FileVersion=1,0,0,1
   file-win32-x86=thiscab
				
bir karşıdan yükleme bir DLL bağımlılığını eklemek için belirtilen en ilk yolu budur.

DLL, ayrı bir CAB dosyasında eklemek için <a0></a0>, tüm gerekli olan, "thiscab" konumundan değiştirmek için bağımlı CAB bulunacağı URL'SI:
File-Win32-x86=http://www.contoso.com/Controls/Dependent.cab
Bu durumda, yalnızca simpdll.dll Simpdll.cab içerir.

Birden fazla DLL INF ve CAB dosyaları gerekiyorsa eklenebilir.

Bağımlı DLL'lerin paketlemek için üçüncü bir kanca kullanarak bağımlı DLL CAB dosyasına başvuruda bulunmak için yoludur. Bu teknik, karşıdan yükleme hakkında bir INF veya EXE dosyasına bağımlı CAB yürütülebilir.

Aşağıdaki bölümde bir .inf dosyasından MFC denetimleri için bağımlı DLL yükleme denetler:
   [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
				
MFC dll (mfc42.cab) .cab dosyasında bulunan bir kendi kendine ayıklanan .exe dosyasını, böyle bir durumda, paketlenmiştir. Ancak, araçları, kendi kendine ayıklanan .exe dosyaları yapmak için şu anda Microsoft'tan ulaşılabilir değil. Bu nedenle, bir .inf dosyası ile bağımlı DLL'lerin paketini veya yükleme kanca .inf dosyasında başvuru gerek ya da olur:
   [yourinstaller]
   file-win32-x86=http://example.microsoft.com/simpdll.cab
   InfFile=your.inf
				
veya üçüncü taraf araçlar kullanılarak EXE dosyası ayıklama bir kendini oluşturmak gerekecektir.

Göstermek için <a0></a0>, bağımlı MFC dll'i yüklemek için kullanılan .inf dosyası aşağıdadır. MFC dll'in yüklü olduğunu ayn? ?ekilde kendi dll'i yüklemek için değiştirebilirsiniz.
   ; ========================= 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 ======================
				
BIR DLL bu DllRegisterServer işlevi verir, .register bölümünde listeleniyor olması gerekir. Bu, Visual C Derleyici'nın dumpbin.exe yardımcı programıyla DLL incelenerek belirlenebilir. Regsvr32, DLL kaydettirmeyi deneyen DLL da çalıştırabilirsiniz. Regsvr32 DLL yükler, üzerinde DLLRegisterServer işlevi GetProcAddress() ça??rarak DllRegisterServer düzgün verilir doğrular. Başarılıysa, işlev DllRegisterServer verilir ve sonra yeniden adlandırılır.

Ancak, Regsvr32 DLL üzerinde çalışan istenmeyen yan etkileri olabilir dikkat. DllRegisterServer çağrıldığında, makinedeki DLL konumuna işaret eden uygun kayıt defteri girişleri sağlar. Örneğin, bir MS-DOS komut istemini sınama amacıyla, aşağıdakileri yazarak sorunlara yol açabilir:
   copy mfc42.dll C:\Test
   run "D:\msdev\bin\REGSVR32.EXE C:\Test\mfc42.dll"
   delete mfc42.dll
				
Mfc42.dll için aramak için sistem çalışır başlattığınızda, kayıt defterini arar, dosya için C:\Test\Mfc42.dll eşleştirilir ve orada bulmuyor. Regsvr32 bir makinede zaten yüklü olan bir dosya üzerinde çalışan sorunları neden olmaz.

Aşağıdaki nedenle EXE ayıklama bir kendini bir kanca ile bir DLL yüklenmesi yararlı olur: bellekte yükseltilmesi için gereksinim duyduğu bir DLL DOSYASı zaten yüklü, karşıdan yükleme başarısız olur. Bu ınternet Explorer sürüm 4.0 sabit bilinen bir sorun var. Internet Explorer 4.0 yeniden önermek ve yeniden sırasında yeni DLL'I yüklenemedi.

Referanslar

Ek bilgi için lütfen aşağıdaki Microsoft Knowledge Base'deki makaleleri bakın:
167158Internet üzerinden paketi MFC denetimleri kullanmak için nasıl
167597DosyaSürümü ve #Version bileşen yükleme için belirtme

Daha fazla bilgi için aşağıdaki Web yayını bakın:
How Does Internet Component Download Work?

Özellikler

Makale numarası: 165075 - Last Review: 21 Aralık 2006 Perşembe - Gözden geçirme: 2.5
Bu makaledeki bilginin uygulandığı durum:
  • 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
Anahtar Kelimeler: 
kbmt kbcode kbdownload kbFAQ kbhowto KB165075 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:165075

Geri Bildirim Ver

 

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