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

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB: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 - 最終更新日: 09/28/2011 05:40:00 - リビジョン: 4.0

  • kbhowto kbdownload kbfaq kbcode kbmt KB165075 KbMtja
フィードバック