EF Ver.1.02をリリースした。
今回のバージョンアップで7-zipに対応したが、
本来7-zipは、Ver1.00で対応するはずだったものだ。この、対応が遅れた原因は、統合アーカイバDLLに準拠しているとされているDLLにおいて、
レスポンスファイルの位置づけがそれぞれによって違うことにある。
位置づけが違うというのは、Cab32.dllや7-zip32.dllにおいて、
レスポンスファイルは単純に圧縮するファイルのリストをファイル化したものであるのに対し、
Unlha32.dll、Zip32j.dllにおいては、レスポンスファイルに圧縮するファイルの他に
基準ディレクトリやコマンドも含めることが可能な、DLLに渡すコマンドをファイル化したものなのである。そのため、「C:\temp\file1.txt, C:\temp\file2.txt, C:\temp\file3.txt」を圧縮する時、
unlha32.dllやzip32j.dllでは、レスポンスファイルに
-------------------------------------------------------------------------------
"C:\temp\" "file1.txt" -x1
"C:\temp\" "file2.txt" -x1
"C:\temp\" "file3.txt" -x1※unlha32.dllの場合
-------------------------------------------------------------------------------
とすればよいが、Cab32.dllや7-zip32.dllでは、
レスポンスファイルを、
-------------------------------------------------------------------------------
"file1.txt"
"file2.txt"
"file3.txt"
-------------------------------------------------------------------------------
とし、DLLに渡すコマンドで、
-------------------------------------------------------------------------------
a -t7z "C:\temp\" -ir-"@responsfile※7-zip32.dllの場合
-------------------------------------------------------------------------------
としなければならない。
EFでは、ファイルのフィルタリング処理があるため、
ディレクトリ丸ごとDLLに圧縮してもらうといったことができず、
どうしても、レスポンスファイルを使用して圧縮するファイルのリストを渡す必要がある。
しかし、この位置づけの違いに、なかなか気づかなかったため、作業が難航。7-zip(やCab)への対応が遅れる。となってしまった。
投稿者 NMVL : 2004年6月 5日 13:15