Как загрузить зависимых библиотек DLL в обозревателе Internet Explorer с файла.inf

Переводы статьи Переводы статьи
Код статьи: 165075 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

Аннотация

Часто оказывается необходимым для загрузки зависимых библиотек DLL, а также с помощью элемента управления ActiveX. Элементы управления MFC и Visual Basic имеют это требование. В данной статье объясняется, что это можно сделать тремя способами.

Дополнительная информация

Существует три способа для загрузки элемента управления зависимых библиотек DLL. Первым способом является включение DLL(s) в CAB-файла для элемента управления вместе с файлами, OCX и INF-ФАЙЛ. Недостатком этого является, что библиотеки DLL будут загружены все время загрузки элемента управления. В некоторых случаях это подходит. Следующий способ — пакета зависит от DLL(s) в отдельный файл CAB-ФАЙЛ и ссылки на которые в INF-файла для элемента управления. Третий способ пакеты также библиотеки DLL в отдельный файл CAB, но в INF-файле элемента управления с ловушка обозначается CAB-файла. С помощью ловушка позволяет загрузку выполнение 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 в файл.

Для включения БИБЛИОТЕКИ в отдельный файл CAB, все необходимое — для изменения расположения из "thiscab" URL-адрес, на котором будет находиться зависимого CAB-файла:
File-Win32-x86=HTTP://www.contoso.com/Controls/Dependent.cab
В этом случае Simpdll.cab содержит только simpdll.dll.

Нескольких библиотек DLL, могут быть добавлены файлы 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
				
В этом случае библиотек DLL MFC упакованы в самораскрывающегося EXE-файла, который содержится в CAB-файл (mfc42.cab). Тем не менее средства чтобы самораспаковывающийся EXE-файлы не являются в настоящее время корпорации Майкрософт. Таким образом, будет либо нужно упаковать зависимых библиотек DLL с INF-файл или ссылку на файл .inf в установке подключения:
   [yourinstaller]
   file-win32-x86=http://example.microsoft.com/simpdll.cab
   InfFile=your.inf
				
Или вам необходимо будет создать самостоятельно, извлечение EXE-файла с помощью стороннего средства.

, Чтобы проиллюстрировать это, вот INF-файла, используемого при установке зависимых библиотек DLL MFC. Установка собственных библиотек DLL в установку библиотек DLL 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 ======================
				
A DLL должны быть перечислены в разделе .register, если он экспортирует функцию Функция DllRegisterServer. Это можно определить, проверив библиотеки DLL с помощью компилятора Visual C Dumpbin.exe программы. Можно также запустить Regsvr32 на библиотеки DLL, которая пытается зарегистрировать библиотеку DLL. Regsvr32 загружает библиотеку DLL, проверяет, что функция DllRegisterServer правильно экспортировать путем вызова функции DLLRegisterServer GetProcAddress(). Если выполняется успешно, функция Функция DllRegisterServer экспортируется и вызывается.

Beware, однако, что запуск 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 Knowledge Base:
167158Как пакет управления MFC для работы через Интернет
167597Указание FileVersion и #Version для загрузки компонентов

Для получения дополнительных сведений см. ниже веб-трансляция:
Как Интернет загрузки компонентов рабочего?

Свойства

Код статьи: 165075 - Последний отзыв: 28 сентября 2011 г. - Revision: 3.0
Информация в данной статье относится к следующим продуктам.
  • Windows Internet Explorer 8
  • Windows Internet Explorer 8 on Windows Server
Ключевые слова: 
kbcode kbdownload kbfaq kbhowto kbmt KB165075 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке: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