Làm thế nào để tải phụ thuộc dll trong Internet Explorer với một INF File

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch máy của Microsoft chứ không phải do con người dịch. Microsoft cung cấp các bài viết do con người dịch và cả các bài viết do máy dịch để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng ngôn ngữ của bạn. Tuy nhiên, bài viết do máy dịch không phải lúc nào cũng hoàn hảo. Loại bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, giống như một người nước ngoài có thể mắc sai sót khi nói ngôn ngữ của bạn. Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra. Microsoft cũng thường xuyên cập nhật phần mềm dịch máy này.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này:165075
TÓM TẮT
Người ta thường cần thiết để tải phụ thuộc DLLs cùng với một ActiveXKiểm soát. Điều khiển MFC và Visual Basic có yêu cầu này. Bài viết nàysẽ giải thích ba cách mà bạn có thể làm điều này.
THÔNG TIN THÊM
Có ba cách để bao gồm phụ thuộc dll trong tải cho mộtkiểm soát. Cách thứ nhất là bao gồm các DLL(s) trong tệp CAB cho cáckiểm soát cùng với OCX và INF tập tin. Nhược điểm của điều này là rằng cácDLL sẽ được tải xuống bất cứ lúc nào điều khiển sẽ được tải về. Trong một số trường hợp,Điều này là thích hợp. Cách tiếp theo là để gói DLL(s) phụ thuộc trong mộttách tập tin CAB và đề cập đến đó trong tệp INF cho sự kiểm soát. CácThứ ba cách cũng gói DLL trong một tệp CAB riêng biệt nhưng tệp CABgọi trong tệp INF của điều khiển với một móc. Sử dụng một móc cho phép cáctải về quá trình để thực hiện một tệp INF hoặc EXE chứa trong phụ thuộcCAB tệp.

Để thêm một phụ thuộc cho một OCX (Simpdll.dll trong ví dụ này), một phầntương tự như phần cho bộ điều khiển sẽ được thêm bộ phận [AddCode]Tệp INF:
   [Add.Code]   TestDw.ocx=TestDw.ocx   simpdll.dll=simpdll.dll				
Một phần sau đó được thêm vào tệp INF để kiểm soát việc cài đặt cácDLL:
   [simpdll.dll]   FileVersion=1,0,0,1   file-win32-x86=thiscab				
Đây là cách đầu tiên đề cập đến bao gồm một sự phụ thuộc của DLL trong một download.

Bao gồm DLL trong một tập tin riêng biệt CAB, tất cả những gì là cần thiết là đểthay đổi vị trí từ "thiscab" vào URL mà phụ thuộc vào CABsẽ được vị trí:
file-Win32-x86=http://www.contoso.com/Controls/dependent.cab
Trong trường hợp này, Simpdll.cab chứa chỉ simpdll.dll.

Nhiều DLLs có thể được thêm vào tệp INF và CAB ở trên nếu cần thiết.

Cách thứ ba để gói phụ thuộc DLLs là để chỉ phụ thuộc của DLL CAB tập tin bằng cách sử dụng một móc. Với kỹ thuật này, một INF hoặc EXE file trong cácCAB phụ thuộc có thể được thực hiện vào tải về.

Các phần sau đây từ một tập tin Inf. kiểm soát tải DLL phụ thuộccho MFC điều khiển:
   [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				
Trong trường hợp này, MFC DLLs được đóng gói trong một file exe self-extracting,mà được chứa trong tập tin .cab (mfc42.cab). Tuy nhiên, các công cụ để làm choself-Extracting exe tệp này không có sẵn từ Microsoft.Vì vậy, bạn sẽ hoặc là cần thiết để gói phụ thuộc DLLs với tệp infhoặc tham khảo tệp inf móc cài đặt:
   [yourinstaller]   file-win32-x86=http://example.microsoft.com/simpdll.cab   InfFile=your.inf				
Hoặc, bạn sẽ cần phải xây dựng một tự giải nén file EXE sử dụng bên thứ bacông cụ.

Để minh họa, sau đây là tệp inf dùng để cài đặt phụ thuộcMFC DLLs. Bạn có thể sửa đổi này để cài đặt DLLs riêng của bạn trong cùng một cáchrằng MFC DLLs được cài đặt.
   ; ========================= 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 ======================				
Một DLL cần phải được liệt kê trong phần .register nếu nó xuất khẩu mộtEFS chức năng. Điều này có thể được xác định bằng cách kiểm tra DLLvới trình biên dịch Visual C Dumpbin.exe tiện ích. Bạn cũng có thể chạyRegsvr32 ngày DLL, cố gắng để đăng ký DLL. Regsvr32 tảiDLL, xác minh rằng DllRegisterServer đúng được xuất khẩu bằng cách gọiGetProcAddress() vào chức năng DLLRegisterServer. Nếu nó đã thành công, cácchức năng DllRegisterServer xuất khẩu và sau đó được gọi là.

Hãy cẩn thận, tuy nhiên, rằng chạy Regsvr32 trên DLL có thể undesirabletác dụng phụ. Khi DllRegisterServer được gọi là, nó làm cho thích hợpmục đăng ký chỉ tới vị trí DLL trên máy tính này. Ví dụ,gõ như sau trong một dấu nhắc MS-DOS, cho các mục đích kiểm tra, có thể gâyvấn đề:
   copy mfc42.dll C:\Test   run "D:\msdev\bin\REGSVR32.EXE C:\Test\mfc42.dll"   delete mfc42.dll				
Sau khi hệ thống cố gắng tìm Mfc42.dll, nó trông cáccơ quan đăng ký, thấy rằng tập tin là ánh xạ tới C:\Test\Mfc42.dll, và khôngtìm thấy nó ở đó. Chạy Regsvr32 vào một tập tin đã được cài đặt trên mộtmáy không gây ra vấn đề.

Cài đặt một DLL với một móc và một tự extracting EXE là hữu ích cho cáclý do sau đây: Nếu một DLL cần phải được nâng cấp đã được nạp trongnhớ, tải về sẽ không thành công. Đây là một vấn đề được biết đến, mà đãcố định trong Internet Explorer phiên bản 4.0. Internet Explorer 4.0 sẽ đề nghịmột khởi động lại và nạp DLL mới trong thời gian khởi động lại.
THAM KHẢO
Để biết thêm chi tiết, xin vui lòng xem các bài viết sau trong cơ sở kiến thức Microsoft:
167158 Làm thế nào để gói MFC Controls để sử dụng trên Internet
167597 Chỉ định FileVersion và #Version để tải về thành phần

Để biết thêm chi tiết, xem Webcast sau đây:

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 165075 - Xem lại Lần cuối: 09/28/2011 14:57:00 - Bản sửa đổi: 3.0

Windows Internet Explorer 8, Windows Internet Explorer 8 on Windows Server

  • kbcode kbdownload kbfaq kbhowto kbmt KB165075 KbMtvi
Phản hồi