CAB ファイルの作成

[このドキュメントはプレビュー版であり、後のリリースで変更されることがあります。 空白のトピックは、プレースホルダーとして挿入されています。]

ここでは、インターネットを通じて ATL コントロールおよび MFC コントロールを頒布するための CAB ファイルの作成方法について説明します。 CAB ファイルに関する詳細情報が必要な場合は、キャビネット ファイルのリファレンス https://msdn.microsoft.com/ja-jp/library/aa376909(v=vs.100) ドキュメント MSDN ライブラリ セットアップおよびシステム管理セットアップ セットアップ API と概要/キャビネット ファイル) 内で Windows SDK」を参照してください。

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

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

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

INF ファイルの作成

INF ファイルは、コントロールを実行するためにインストールまたはダウンロードする必要のあるファイル (DLL やその他の OCX など) を指定するテキスト ファイルです。 INF ファイルを使用すると、必要なすべてのファイルをまとめて 1 つの CAB ファイルに圧縮できます。 既定では、ユーザーのハード ディスクに既にあるファイルと同じバージョンのファイルは、ダウンロードされません。 INF ファイルとそのオプションの詳細についてなどのプラットフォームに依存しない INF ファイルの作成、」および「INF ファイルのバージョン https://msdn.microsoft.com/ja-jp/library/aa376858(v=vs.100)を使用して INF ファイル Windows SDK ドキュメント (で MSDN ライブラリ セットアップとシステム管理セットアップ セットアップ API と概要/セットアップ アプリケーション) で」を参照してください。

たとえば、次の INF を使用して ATL Polygon コントロール用の CAB ファイルを作成します。 POLYGON.DLL をビルドするには、Visual C++ CD-ROM から ATL POLYGON サンプル ファイルをコピーし、MinSize 版 Polygon コントロールをビルドします。 多角形のコントロールを MinSize バージョンをビルドする場合は、1 つ追加の DLL、ATL.DLL 必要があります。 ATL.DLL POLYGON.DLL 前に登録する必要がありますので、ATL.DLL 最初 INF ファイルに追加します。

; Sample INF file for POLYGON.DLL
[version] 
; version signature (same for both NT and Windows 95) 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"場所はファイルが読み込まれているディレクトリ。システム ディレクトリ WINDOWS/SYSTEM または WINNT/SYSTEM32; 11 を指定します。Windows ディレクトリ、Windows または WINNT 10 を指定します。 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 ファイル内の情報です。

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 ファイルの作成