كيفية تنزيل ملفات DLL التابعة في Internet Explorer مع ملف .inf

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

اضغط هنا لرابط المقالة باللغة الانجليزية165075
الموجز
من الضروري غالباً تحميل DLL التابعة مع عنصر تحكم ActiveX. تحتوي عناصر تحكم MFC و Visual Basic هذا المطلب. فسوف توضح هذه المقالة ثلاث طرق يمكنك القيام بذلك.
معلومات أخرى
توجد ثلاث طرق لتضمين DLLs التابعة في تحميل عنصر تحكم. الطريقة الأولى لتضمين DLL(s) في ملف CAB لعنصر التحكم مع OCX وملفات INF. هو downside هذا أنه سيتم تحميل DLL أي وقت تحميل عنصر التحكم. في بعض الحالات، يكون هذا مناسباً. الطريقة التالية هي حزمة DLL(s) التابعة في ملف CAB منفصل الإشارة إلى التي في ملف INF لعنصر التحكم. الطريقة الثالثة أيضاً حزم DLL في ملف CAB منفصل ولكن تتم الإشارة إلى ملف CAB في ملف INF عنصر التحكم مع ربط. يسمح استخدام ربط عملية التحميل لتنفيذ ملف INF أو EXE المتضمنة في ملف CAB التابعة.

إضافة تبعية للحصول OCX (Simpdll.dll في هذا المثال) ، يتم إضافة مقطع مشابهة إلى المقطع عنصر التحكم إلى المقطع [AddCode] من ملف INF:
   [Add.Code]   TestDw.ocx=TestDw.ocx   simpdll.dll=simpdll.dll				
ثم تتم إضافة مقطع إلى ملف INF للتحكم في تثبيت DLL:
   [simpdll.dll]   FileVersion=1,0,0,1   file-win32-x86=thiscab				
هذه هي الطريقة الأولى المذكورة على تبعية DLL في تحميل.

لتضمين DLL في ملف CAB منفصل كل ضروري لتغيير الموقع من "thiscab" إلى URL الذي CAB التابعة سيقع:
file-win32-x86=http://www.contoso.com/controls/dependent.cab
في هذه الحالة، يتضمن Simpdll.cab simpdll.dll فقط.

يمكن أن تتم إضافة DLLs عدة ملفات INF و CAB أعلاه إذا لزم الأمر.

الطريقة الثالثة لحزم ملفات DLL التابعة للإشارة إلى ملف CAB DLL التابعة باستخدام ربط. مع هذه التقنية يمكن تنفيذ ملف INF أو EXE في CAB التابعة التنزيل.

المقطع التالي من ملف .inf التحكم في تحميل DLL التابعة لعناصر تحكم 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				
في هذه الحالة، حزم DLLs MFC .exe بملف استخراج ذاتي ، التي يتضمنها ملف .cab (mfc42.cab). ومع ذلك، الأدوات لجعل الملفات الاستخراج الذاتي بالملحق .exe غير متوفرة حالياً من Microsoft. لذلك، سوف إما الحاجة حزمة DLLs التابعة مع ملف .inf أو الرجوع إلى ملف .inf في ربط التثبيت:
   [yourinstaller]   file-win32-x86=http://example.microsoft.com/simpdll.cab   InfFile=your.inf				
أو ستحتاج إلى إنشاء الذاتي استخراج ملف EXE باستخدام أدوات جهة خارجية.

لتوضيح ، التالي هو ملف .inf المستخدمة لتثبيت DLLs MFC التابعة. يمكنك تعديل هذا لتثبيت DLLs الخاصة بك بنفس الطريقة DLLs MFC مثبتة.
   ; ========================= 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 ======================				
DLL A يحتاج إلى أن يتم سردها في المقطع .register إذا يعمل تصدير دالة DllRegisterServer. يمكن تحديد عن طريق فحص DLL مع الأداة المساعدة Dumpbin.exe المحول البرمجي Visual C. يمكنك أيضاً تشغيل Regsvr32 على DLL الذي يحاول تسجيل DLL. تحميل DLL Regsvr32 ، يتحقق من تصدير DllRegisterServer بشكل صحيح عن طريق استدعاء GetProcAddress() على وظيفة DLLRegisterServer. في حالة نجاح ذلك، الدالة DllRegisterServer تصدير ثم يتم عندئذٍ استدعاء.

احترس ومع ذلك، تعمل Regsvr32 على DLL قد أن الآثار الجانبية غير مرغوب فيها. عندما يتم استدعاء DllRegisterServer يجعل إدخالات التسجيل المناسب تشير إلى الموقع DLL على الجهاز. على سبيل المثال، كتابة ما يلي في موجه MS-DOS لأغراض الاختبار يؤدي إلى حدوث مشكلات:
   copy mfc42.dll C:\Test   run "D:\msdev\bin\REGSVR32.EXE C:\Test\mfc42.dll"   delete mfc42.dll				
الوقت التالية يحاول النظام ابحث عن Mfc42.dll ، فإنه يبحث عن التسجيل ، عن أن الملف تم تعيينه إلى C:\Test\Mfc42.dll و لا العثور عليه هناك. لا يؤدي تشغيل Regsvr32 على ملف الذي تم تثبيته مسبقاً على جهاز مشكلات.

تثبيت DLL مع ربط و الذاتي EXE استخراج مفيد للسبب التالي: إذا تم تحميل DLL التي يحتاج إلى ترقية بالفعل في الذاكرة, يفشل التنزيل. هذه هي مشكلة معروفة تم إصلاح في Internet Explorer الإصدار 4.0. سيقوم Internet Explorer 4.0 اقتراح إعادة تمهيد ثم تحميل DLL جديد أثناء إعادة التشغيل.
مراجع
للحصول على مزيد من المعلومات، الرجاء مراجعة المقالات التالية في "قاعدة معارف Microsoft:
167158كيفية عناصر MFC حزمة للاستخدام عبر إنترنت
167597لتعيين FileVersion و #Version التحميل المكونات

لمزيد من المعلومات، راجع عرض نشرة الويب التالية:

تحذير: تمت ترجمة هذه المقالة تلقائيًا

คุณสมบัติ

รหัสบทความ: 165075 - การตรวจสอบครั้งสุดท้าย: 12/21/2006 10:11:59 - ฉบับแก้ไข: 2.5

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

  • kbmt kbcode kbdownload kbfaq kbhowto KB165075 KbMtar
คำติชม