次の方法で共有


CAB ファイルの作成

更新 : 2007 年 11 月

ここでは、インターネットを通じて ATL コントロールおよび MFC コントロールを頒布するための CAB ファイルの作成方法について説明します。CAB ファイルの詳細については、Windows SDK の「Cabinet File Reference」(『MSDN ライブラリ』-「セットアップおよびシステム管理」-「Setup and System Administration」/「Setup」-「Setup API」-「Overview」-「Cabinet Files」) を参照してください。

CAB ファイルを作成するには

  1. INF ファイルを作成します。

  2. CABARC ユーティリティを実行します。

INF ファイルの作成

INF ファイルは、コントロールを実行するためにインストールまたはダウンロードする必要のあるファイル (DLL やその他の OCX など) を指定するテキスト ファイルです。INF ファイルを使用すると、必要なすべてのファイルをまとめて 1 つの CAB ファイルに圧縮できます。既定では、ユーザーのハード ディスクに既にあるファイルと同じバージョンのファイルは、ダウンロードされません。プラットフォームに依存しない INF ファイルの作成方法など、INF ファイルとそのオプションの詳細については、Windows SDK の「About INF Files」および「Using INF Files」(『MSDN ライブラリ』-「セットアップおよびシステム管理」-「Setup and System Administration」/「Setup」-「Setup API」-「Overview」-「Setup Applications」) を参照してください。

たとえば、次の INF を使用して ATL Polygon コントロール用の CAB ファイルを作成します。POLYGON.DLL をビルドするには、Visual C++ CD-ROM から ATL POLYGON サンプル ファイルをコピーし、MinSize 版 Polygon コントロールをビルドします。MinSize 版をビルドするには、ATL.DLL も必要です。POLYGON.DLL よりも ATL.DLL を先に登録する必要があるため、INF ファイルで ATL.DLL を先に指定します。

; Sample INF file for POLYGON.DLL
[version] 
; version signature (same for both NT and Win95) do not remove
signature="$CHICAGO$"
AdvancedINF=2.0  

[Add.Code]
polygon.dll=polygon.dll
atl.dll=atl.dll

; needed DLL
[atl.dll]
file-win32-x86=thiscab
FileVersion=2,00,0,7024
DestDir=11
RegisterServer=yes 

[polygon.dll]
file-win32-x86=thiscab
clsid={4CBBC676-507F-11D0-B98B-000000000000} 
FileVersion=1,0,0,1 
RegisterServer=yes  
; end of INF file

この INF では、指定されたバージョンの ATL.DLL がシステムにインストールされます。ATL.DLL がシステムにない場合は、この INF で作成した CAB ファイルからダウンロードされます。"thiscab" は、この INF が含まれている CAB を示すキーワードです。次のように絶対パスまたは相対パスを指定して、HTTP サイトから必要な DLL をダウンロードすることもできます。

file-win32-x86=http://example.microsoft.com/mydir/NEEDED.DLL 

キーワード "file-win32-x86" は x86 プラットフォームを示します。

ファイルのバージョン番号を調べるには、Windows エクスプローラでファイルを右クリックします。表示されたメニューの [プロパティ] をクリックし、ダイアログ ボックスの [バージョン情報] タブをクリックします。場合によっては、ファイル バージョンに "0" を 1 つ追加する必要があります。たとえば、ATL.DLL のバージョン番号はダイアログ ボックスに "2.00.7024" と表示されますが、INF ファイルでは "2, 00, 0, 7024" になります。

"DestDir" は、ファイルの読み込み先フォルダです。"11" はシステム フォルダ WINDOWS\SYSTEM または WINNT\SYSTEM32 を示します。"10" は Windows フォルダ WINDOWS または WINNT を示します。DestDir を指定しないと (通常の場合)、コードは固定の OCCACHE フォルダにインストールされます。

"clsid" は、インストールするコントロールの CLSID です。

INF ファイルを作成したら、Mssdk\Bin フォルダにある CABARC ユーティリティを実行して、CAB ファイルを作成します。CABARC は、ソース ファイルが入っているフォルダで実行する必要があります。コマンド ラインで INF での指定順にソース ファイルを指定し、最後に INF ファイルを指定します。たとえば、上の INF から Polygon コントロールの CAB ファイルを作成するには、次のコマンドを使用します。

C:\MSSDK\BIN\CABARC -s 6144 POLYGON.CAB ATL.DLL POLYGON.DLL POLYGON.INF

POLYGON.CAB ファイルの内容は、ATL.DLL および POLYGON.DLL の圧縮バージョンと、これらの DLL を抽出するのに必要な POLYGON.INF ファイル内の情報です。

CAB ファイルのコンポーネント ファイルの解析および抽出の例については、MSDN オンライン Code Center のサンプル CabView を参照してください (https://msdn.microsoft.com/visualc/downloads/samples.asp にある [CabView] リンクを選択)。

MFC コントロールと一緒に組み込む必要のある DLL ファイルは、MSVCRT.DLL、MFC42.DLL、および OLEPRO32.DLL です。

CABARC ユーティリティの実行

CABARC ユーティリティは、Mssdk\Bin フォルダにあります。次に例を示します。

C:\MSSDK\BIN\CABARC -s 6144 n MYCTL.CAB NEEDED1.DLL NEEDED2.DLL MYCTL.OCX MYCTL.INF

上のコマンドを実行すると、CABARC ユーティリティによって MYCTL.CAB という CAB ファイルが作成されます。

CABARC は、ソース ファイル (INF、OCX、および DLL ファイル) が入っているフォルダで実行する必要があります。CAB ファイルにパッケージ化するファイルは、INF ファイルでの指定順にコマンド ラインで指定する必要があります。上の例では、INF ファイル内で NEEDED1.DLL、NEEDED2.DLL、MYCTL.OCX の順に指定されていることになります。

-s オプションは、キャビネット内にコード署名用のスペースを確保します。n コマンドは、CAB ファイルの作成を指定します。CABARC のコマンドとオプションの一覧を表示するには、次のようにコマンド ラインに「CABARC」とだけ入力します。

C:\MSSDK\BIN\CABARC

参照

概念

MFC コントロールおよび ATL コントロール用の署名付き CAB ファイルの作成