CAB で圧縮する

ファイルを圧縮して .CAB ファイルを作成します。
CAB は、マイクロソフト社がプログラム配布用などに用いるキャビネットファイルです。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プロジェクトの設定

  1. ネットなどから cab32098.exe をダウンロードして下さい。
    cab32xxx.exe の xxx はバージョン番号で、バージョンアップされると変わるので注意して下さい。
    ダウンロードしたファイルを解凍して下さい。
  2. unlha32 や cab32 は『統合アーカイバAPI仕様』に準拠していてAPIの仕様が統一されています。
    とは言え実際にプログラムするとなると細かい所に違いがあり、同じプログラムでは動きません。
  3. 新規プロジェクトで[空のプロジェクト]を作成して次のファイルを格納して下さい。
    ファイル名説明
    cab.cpp メインプログラムファイルです
    cab32.lib LIB ファイルです
    cabapi.h LIB Header ファイルです
    file.txt 圧縮する TEXT ファイルです
  4. プログラムを実行するには cab32.dll が必要です。
    ネットで検索すればすぐ見つかるはずです。
    カレントディレクトリまたは、C:\Windows\system32 のフォルダーに格納して下さい。
  5. Cab.cpp の全ソースコードです。
    "file.cab" が作成する CAB ファイルの名前で "file.txt" が圧縮するファイルです。
        /*****************************************/
        /*★ File を CAB で圧縮する    前田 稔 ★*/
        /*****************************************/
        #include    <windows.h>
        #include    "cabapi.h"
        #pragma     once
        #pragma     comment(lib,"cab32.lib")
    
        char    buf[512];
    
        //★ Windows Main 関数
        int PASCAL  WinMain(HINSTANCE hInst, HINSTANCE, LPSTR lpCmdLine, int)
        {
            if (Cab(NULL,"-a file.cab file.txt",buf,512))
                    MessageBox(NULL,buf,"CAB 圧縮 Error",MB_OK);
            else    MessageBox(NULL,buf,"CAB 圧縮 OK",MB_OK);
            return 0;
        }
        
  6. プログラムを実行するとプロジェクトのフォルダーに file.cab が作成されます。
    作成された CAB を解凍して、正常に圧縮されたことを確認して下さい。
  7. ファイルを圧縮するのは非常に簡単で、次のコマンドを実行するだけです。
    buf[] にはコマンドの実行状況が格納されます。
    Cab(NULL,"-a file.cab file.txt",buf,512)
  8. コマンドも良く似ているのですが Unlha とは多少違います。
    コマンドの詳細は cab32xxx.exe を解凍したときに格納されている cab32cmd.TXT を参照して下さい。

【演習】

  1. CAB の使用に当たって次のような記述があります。
    それから貴方のソフトでこのDLLに対応する場合、出来るだけダイナミック
    リンク(LoadLibrary/GetProcAddress)で使用するようにして、CAB32.DLL が
    無い環境でも、(CAB関係が使えないだけで)問題なく動作するような設計に
    してください。
    
  2. LoadLibrary() と GetProcAddress() を使って圧縮するプログラムを作成して下さい。
    詳細は DLL を Dyamic にリンクする を参照して下さい。
  3. Drag & Drop されたファイルを圧縮するプログラムを作成して下さい。
    Drag & Drop の説明は ドラッグ&ドロップで画像を表示 を参照して下さい。
    作成する圧縮ファイルの名前は、ソースファイルの拡張子を CAB に変更したものとします。

超初心者のプログラム入門(Win32API C++)