WindowsXP以降で質問です。


Lhaplusなら何とか1ファイルぐらい復元できる壊れたZIPファイルがあります。
これを自作商用ソフトにおいて、手間をかけずに解凍できるようにしたいと考えています。

そこで、コマンドベース(Shell)から動作し、且つ自作ソフト(VB.NETで構築中)に組み込んで商用で販売したとしてもソースコードを公開する義務が発生しないものを教えてください。
オープンソースでなく、有料ソフトウェアでも構いません。
ただし、7-Zip( http://sevenzip.sourceforge.jp/ )は除きます…全く解凍できなかったので。
※なお、手間がかかるけれどもDLLから展開できる方法も募集します。

よろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2011/04/27 20:08:58
  • 終了:2011/05/04 20:10:06

回答(1件)

id:ratbeta No.1

ratbeta回答回数132ベストアンサー獲得回数92011/04/27 22:31:05

ポイント60pt

zip書庫を展開するソフトウェアやDLLには様々なものがありますが、Info-zipのzipとunzipでどうでしょうか。

FやFFなどのスイッチを用いることで、書庫を修復することも場合によっては可能です。

http://www.info-zip.org/

ダウンロードできるURLが分かりにくいので、正式版の直リンクも貼っておきます。

ftp://ftp.info-zip.org/pub/infozip/win32/zip300xn.zip

ftp://ftp.info-zip.org/pub/infozip/win32/unz600xn.exe

ライセンスは http://www.info-zip.org/license.html にありますが、BSD系のライセンスで商用でも組み込み可です。


DLLで展開する方法としては、Info-zipのunzip32.dllを利用する方法や、統合アーカイバのunzip32.dllを使う方法があります。

後者は前者を元にして開発された統合アーカイバ仕様対応のライブラリですが、前者がInfo-zipのライセンスで使えるのに対し、後者は商用利用の場合は有償で、ライセンス契約が必要です。

Info-zip: ftp://ftp.info-zip.org/pub/infozip/win32/unz600dn.zip

統合アーカイバ: http://www.csdinc.co.jp/archiver/lib/unzip32.html

id:halohalolin

ratbeta さんありがとうございます。

問題のファイルが解凍可能か試してみます!

2011/04/27 22:37:22
  • id:halohalolin
    Info-zipで解凍するコマンドは

    unzip.exe -o <圧縮元ファイル名>.zip -d <展開先フォルダ名>

    で、できるようなのですが、壊れたzipファイルを解凍することができません。

    具体的には、

    Archive: <圧縮元ファイル名>.zip
    End-of-central-directory signature not found. Either this file is not
    a zipfile, or it constitutes one disk of a multi-part archive. In the
    latter case the central directory and zipfile comment will be found on
    the last disk(s) of this archive.
    unzip: cannot find zipfile directory in cap.zip,
    and cannot find cap.zip.zip, period.

    というエラーが発生します。
    適当なファイルを即席でWindows7 Home Premium SP1へ作らせさせた場合(正常なzipファイル)の場合は、一発で上手くいったのですが。

    何か他にコマンドがあるのでしょうか?
    よろしくお願いします。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません