2010年1月21日木曜日

cabarc.exe と makecab.exe

cabinetファイル(.cab)を Microsoft のライブラリのみで作成しようとする場合、
"Microsoft Cabinet SDK"を使用して作るのが一般的だろうか。

作成する際、2つくらい選択肢があった。
"cabarc.exe" と "makecab.exe"

初めは、"cabarc.exe"を使用していた。
なんでこっちを選んだか。
たぶん、これで圧縮も展開もできたからだと思いますが、経緯は忘れました。。。

ただ、これには問題があって、圧縮時にファイルのタイムスタンプを勝手に書き換えていました
しばらく気付かずに使用していましたが、これは望んでいない動きのため、"makecab.exe"に変更したというわけです。

今後使用する予定のある方、お気を付けください。


また、"cabarc.exe"のヘルプは、extract32.exe同様、
"cabarc > helpfile.txt" などでファイルに出力ができる。
"makecab.exe"は、"makecab.exe /?"でヘルプが表示されます。

以下、cabarc.exeのヘルプ。

----
Microsoft (R) Cabinet Tool - Version 1.00.0601 (03/18/97)
Copyright (c) Microsoft Corp 1996-1997. All rights reserved.

Usage: CABARC [options] command cabfile [@list] [files] [dest_dir]

Commands:
   L   List contents of cabinet (e.g. cabarc l test.cab)
   N   Create new cabinet (e.g. cabarc n test.cab *.c app.mak *.h)
   X   Extract file(s) from cabinet (e.g. cabarc x test.cab foo*.c)

Options:
  -c   Confirm files to be operated on
  -o   When extracting, overwrite without asking for confirmation
  -m   Set compression type [LZX:<15..21>|MSZIP|NONE], (default is MSZIP)
  -p   Preserve path names (absolute paths not allowed)
  -P   Strip specified prefix from files when added
  -r   Recurse into subdirectories when adding files (see -p also)
  -s   Reserve space in cabinet for signing (e.g. -s 6144 reserves 6K bytes)
  -i   Set cabinet set ID when creating cabinets (default is 0)

Notes
-----
When creating a cabinet, the plus sign (+) may be used as a filename
to force a folder boundary; e.g. cabarc n test.cab *.c test.h + *.bmp

When extracting files to disk, the , if provided, must end in
a backslash; e.g. cabarc x test.cab bar*.cpp *.h d:\test\

The -P (strip prefix) option can be used to strip out path information
e.g. cabarc -r -p -P myproj\ a test.cab myproj\balloon\*.*
The -P option can be used multiple times to strip out multiple paths



0 件のコメント: