Internet Explorer では、.inf ファイルで依存 Dll をダウンロードするには、方法

文書翻訳 文書翻訳
文書番号: 165075
すべて展開する | すべて折りたたむ

概要

通常、ActiveX と共に依存 Dll をダウンロードする必要がコントロールです。MFC および Visual Basic のコントロールは、この必要があります。この資料でこれを行うことができます、3 つの方法について説明します。

詳細

依存 Dll をダウンロードするには、3 つの方法は、コントロールです。最初の方法、DLL(s) 用の CAB ファイルに含めるには、.ocx ファイルおよび INF と共にファイルを制御します。この欠点は、DLL は、コントロールのダウンロード、いつダウンロードされます。場合によっては、適しています。次の方法、依存 dll の中でのパッケージには、CAB ファイルを区切るし、するには、コントロールの INF ファイルで参照してください。は、3 つ目の方法はまた、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 ファイルに含めるには、必要なものは依存 CAB の URL"thiscab"の場所を変更します。配置になります。
file-win32-x86=http://www.contoso.com/controls/dependent.cab
この例では、Simpdll.cab には simpdll.dll のみが含まれます。

複数の Dll 上の INF と CAB ファイルを必要に応じて追加できます。

依存 Dll をパッケージ化するのには、3 番目の方法としては、フックを使用して依存 DLL の CAB ファイルを参照してくださいすることです。この方法では、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
				
この例では、MFC Dll は、自己解凍形式の .exe ファイルにパッケージ化されている、どの .cab ファイル (mfc42.cab) に含まれています。ただし、ツールを作成するには自己解凍形式の .exe ファイルはマイクロソフトでは現在利用できません。そのためには、か、依存 Dll を .inf ファイルにパッケージ化する必要があります。または、フック インストールに .inf ファイルを参照します。
   [yourinstaller]
   file-win32-x86=http://example.microsoft.com/simpdll.cab
   InfFile=your.inf
				
または、サードパーティ製を使用して EXE ファイルを抽出する自己を構築する必要があります。ツールです。

示すために、次の依存ファイルをインストールするために使用する .inf ファイルです。MFC Dll。これと同じ方法で、独自の Dll をインストールするのには、変更します。MFC Dll がインストールされていること。
   ; ========================= 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 を検査すれば判断できます。Visual C コンパイラの Dumpbin.exe ユーティリティを使用します。実行することもできます。Regsvr32 で DLL は、DLL を登録しようとしています。Regsvr32 をロードします。DLL を確認する呼び出して DllRegisterServer が正しくエクスポートされることDLLRegisterServer 関数の GetProcAddress()。成功した場合は、関数の DllRegisterServer はエクスポートされ、呼び出されます。

ただし、DLL で Regsvr32 を実行してないがあることに注意します。副作用。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 指定するファイルバージョンと #Version コンポーネントのダウンロード

詳細については、次の web キャストを参照してください。
インターネット コンポーネントの作業には?

プロパティ

文書番号: 165075 - 最終更新日: 2011年9月28日 - リビジョン: 4.0
キーワード:?
kbhowto kbdownload kbfaq kbcode kbmt KB165075 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:165075
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

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