質問: vb6で7-zipのapiを使用した圧縮でフォルダが消えてしまいます windows2000 vb6.0で開発をしています。 7-zipのapiを使用してフォルダを圧縮しています。 そのときのコマンドは下記の通りです。 "a -r -tzip -mx "xxx.zip" "xxx\" *.* 圧縮もとのxxxフォルダの中には 3つのフォルダが入っていて、 そのうち一つのフォルダにはファイルが 1つも入っていません。 上のコマンドをプログラムで実行させて、 xxx.zipファイルを作成後 圧縮元となるフォルダを削除すると、 なぜか、zipファイルを展開したときに、 圧縮されているはずの3つのフォルダのうち、 ファイルの入っていないフォルダだけ消えて フォルダが2つになっています。 中身が空のフォルダも残して フォルダの構成はそのままで圧縮したいので、 フォルダが消えてしまって、困っています。 ちなみに7-zipのソフトで実行すると、 フォルダは消えません。 7-zipのコマンドで更新オプションの部分が怪しく、 「-up2q2」など追加して色々ためしているのですが、 なかなかうまくいきません(涙) どなたか、解決につながりそうな情報をお持ちでしたら、 どうか、教えてください。 よろしくお願い致します。
回答: >どなたか、解決につながりそうな情報をお持ちでしたら、 >どうか、教えてください。 7zに対応したdllは色々あり、質問文でどのdllを使用した場合について述べているか不明な為、回答は不可能。 開発者の思想の違いにより「空のフォルダは書庫内に残さない」「空のフォルダは圧縮しない」「空のフォルダは展開時に新規作成しない」と考える開発者と、真逆の考え方をする開発者が居る。 もちろん、どちらが正しいとは言えないが「空フォルダが事前に用意されてないと正常に動作しないのはアプリの不具合であり、空フォルダが必要ならアプリが起動後にフォルダの有無について責任を負うべきで、書庫ツールに空フォルダの生成責任を押し付けるな」と言うのが、現在の主流。 「書庫に空フォルダが出来てしまう」「書庫に空フォルダがあると展開時に空フォルダを作ってしまう」のを「明らかなバグである」と公言する開発者も居る。 因みに、書庫ソフトによっては、dllを呼ばずにソフト内部ですべて処理するソフトもあるので、dllとソフトで圧縮と解凍の挙動が異なる場合がある。 「dllは幾つかある」ので「使用目的と開発思想が一致したdll」を探して使用しよう。