"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