วิธีการดาวน์โหลด DLLs อ้างถึงใน Internet Explorer ด้วย.inf แฟ้ม

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 165075 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

สรุป

มักจะจำเป็นต้องดาวน์โหลด DLLs ขึ้นพร้อมกับตัวควบคุม ActiveX ตัวควบคุม mfc และ Visual Basic มีข้อกำหนดนี้ บทความนี้จะอธิบายถึงสามวิธีที่คุณสามารถทำเช่นนี้

ข้อมูลเพิ่มเติม

มีสามวิธีในการรวม DLLs ขึ้นในการดาวน์โหลดตัวควบคุม วิธีแรกคือการ รวมแบบ DLL(s) ในไฟล์ CAB สำหรับตัวควบคุมพร้อมกับแฟ้ม OCX และ INF downside นี้คือ ว่า DLL ที่จะถูกดาวน์โหลดทุกเวลาที่มีดาวน์โหลดตัวควบคุม ในบางกรณี อยู่ที่เหมาะสม วิธีการถัดไปคือ แพ็คเกจ DLL(s) ขึ้นในไฟล์ CAB ที่แยกต่างหาก และการอ้างอิงที่ในแฟ้ม INF ที่ตัวควบคุม วิธีการสามชุด DLL ในไฟล์ CAB ที่แยกต่างหากเช่นกัน แต่ไฟล์ CAB จะอ้างอิงถึงในแฟ้ม INF ของตัวควบคุมด้วยตัวของ hook ใช้ hook ของบันทึกการทำให้กระบวนการดาวน์โหลดเพื่อดำเนินการแฟ้มมี 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 ข้างต้นถ้าจำเป็น

วิธีสามที่แพ็คเกจ DLLs ขึ้นคือการ อ้างอิงของ hook แบบการใช้แฟ้ม 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 ใน hook ของบันทึกการติดตั้ง:
   [yourinstaller]
   file-win32-x86=http://example.microsoft.com/simpdll.cab
   InfFile=your.inf
				
หรือ คุณจำเป็นต้องสร้าง self ที่แยกแฟ้ม 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 ต้องถูกแสดงในส่วน.register ถ้าจะส่งออกฟังก์ชัน DllRegisterServer ซึ่งสามารถถูกกำหนด โดยการตรวจสอบ DLL ด้วยยูทิลิตี Dumpbin.exe ของคอมไพเลอร์ Visual C นอกจากนี้คุณสามารถรัน Regsvr32 ใน DLL ซึ่งความพยายามที่ลงทะเบียน DLL regsvr32 โหลด DLL ตรวจสอบว่า DllRegisterServer ถูกส่งออกได้อย่างถูกต้อง โดยการเรียก GetProcAddress() บนฟังก์ชัน DLLRegisterServer ถ้าสำเร็จ ฟังก์ชัน DllRegisterServer ส่งออก และถูกเรียกจากนั้น

beware อย่างไรก็ตาม ให้รัน Regsvr32 ใน DLL อาจมีลักษณะพิเศษด้าน undesirable เมื่อเรียก 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 เป็นของ hook และ self ที่แยก EXE จะเป็นประโยชน์เนื่องจากสาเหตุต่อไปนี้: ถ้ามีโหลด DLL ที่จำเป็นต้องปรับรุ่นในหน่วยความจำ การดาวน์โหลดจะล้มเหลว นี่คือการตรวจพบปัญหา ซึ่งได้ถูกแก้ไขใน Internet Explorer รุ่น 4.0 Internet Explorer 4.0 จะแนะนำการเริ่มระบบใหม่ และสามารถโหลด DLL ใหม่ในระหว่างการเริ่มระบบใหม่

ข้อมูลอ้างอิง

สำหรับข้อมูลเพิ่มเติม โปรดดูบทความในฐานความรู้ของ Microsoft ต่อไปนี้:
167158วิธีการควบคุม MFC แพคเกจสำหรับใช้น้อยเกินไปยังอินเทอร์เน็ต
167597การระบุ FileVersion และ #Version สำหรับการดาวน์โหลดคอมโพเนนต์

สำหรับข้อมูลเพิ่มเติม ให้ดูเว็บคาสต์ต่อไปนี้:

คุณสมบัติ

หมายเลขบทความ (Article ID): 165075 - รีวิวครั้งสุดท้าย: 28 กันยายน 2554 - Revision: 4.0
ใช้กับ
  • Windows Internet Explorer 8
  • Windows Internet Explorer 8 on Windows Server
Keywords: 
kbcode kbdownload kbfaq kbhowto kbmt KB165075 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:165075

ให้ข้อเสนอแนะ

 

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