ACE Compression SoftwareのUnAceV2.DLLを使用して、共通アーカイバ仕様APIを実装したDLLです。対応アプリケーションから呼び出されます。
ACE書庫を解凍するためにACE Compression Softwareが提供するUnAceV2.DLLは、慣れればアプリケーションから使えない事はないが、日本人の開発者には使い慣れた共通アーカイバ仕様のAPIの方が使いやすいと思うので、ラッパDLLを作成してみました。
ちなみに、世間には同様のコンセプトのラッパDLLが存在しますが、いつまで待っても進捗しないので、自アプリでACE書庫展開を実現するには自分で作るしか!と思い作成を開始し、予想通り先にリリースしてしまいました。
UnAceV2.DLLで多用されているコールバックなAPIをクラス内に実装し、結果出力を内部変数に保持し、共通アーカイバ仕様APIの戻り値に加工します。
同梱されたUnAceV2.DLLまたは、 ACE Compression Softwareから取得したUnAceV2.DLLと、このUnAceV2J.DLLをWindowsのシステムディレクトリに置いてください。
インストール時にコピーしたファイルを削除してください。
UnAceV2J.DLLに対応したアプリケーションを使ってください。
UnAceV2J.DLL は、共通アーカイバ仕様DLLのAPI仕様のほとんどを満たしている完成品です。(バグがあったらごめんなさい)アプリケーションから使用するための必要最低限の API は実装されています。
APIの使用方法に関しては、書庫付属のドキュメントを参照してください。
| バージョン | 日付 | 項目 |
|---|---|---|
| 0.01 | 2004/11/30 | 最初のバージョン。 |
| 0.02 | 2004/12/25 | 偽Unace32.dll機能を実装。ネイティブなUnAceV2J.DLL内APIをコールするラッパAPIで、UnAceV2J.DLLをUnace32.dllとリネームすると、Unace32.dllを利用するアプリケーションから使える...かも。 「l」コマンドの場合は、パス情報を出力しないようにした。(これが実用的かどうかは別として、UnAce32.exeの仕様に合わせるということで) Unlha()の仕様に倣い、UnAce()の時に、引数の_hwndに ::EnableWindow(_hwnd, FALSE) するようにした。 UnAceV2.DLLを同梱。 ソース添付。 |
| 0.03 | 2004/12/28 | UnAceFindFirst, UnAceFindNextでの書庫内データ取得時に最後のファイルが取得できないバグの修正。 |
| 0.04 | 2005/05/17 | storedメソッドで圧縮されたファイルをUnAceGetMethodで取得できないバグの修正。 |
| 0.05 | 2006/02/25 | ファイルが列挙されない事があるバグを修正した。 |
| 0.06 | 2010/05/27 | Visual Studio 2005でリビルド。 UnAceV2.DLLはVer2.6のものを同梱。 |
| 0.07 | 2010/07/04 | Visual Studio 2010でリビルド。 |
| 0.08 | 2010/08/08 | Visual Studio 2010 のMFCをスタティックリンクするとDLLのサイズが巨大になるので、MFCをやめてATL/WTLを使用するようにソースを修正。 レスポンスファイルの両端が「"」で囲まれている場合に対応。 |
『指定外の場所へファイルが展開されてしまう脆弱性』の問題というのが書庫を展開するDLLやアプリケーション側で対応されたりしていますが、後発の UnAceV2J.DLLでは、0.01から対応済みで、コマンドラインオプションで明示的に「--ea0」としない限り「..」を含んだファイルはユーザの許可無しに展開されません。詳しくは、UnAceV2CMD.txtの「--ea」オプションを参照してください。
ACE 書庫からの展開機能に関しては、フリーソフトとして UnAceV2.DLL が提供されていますが、圧縮機能に関しては別DLLで有料となっており、私自身レジストするほど ACE 書庫の魅力を感じないので、対応する予定はありません。
同様のコンセプトで、同じくACE書庫を扱える某DLLが、将来に ActiveAce対応するらしいです。また、某所にて ActiveAce に対応した Ace32.DLL というものもあるらしいです。どちらの場合も、シェアウェアである ActiveAceを利用するため、試用期間が過ぎての利用は、ActiveAce のレジストをする必要がありますね...。既に過去の話題で、現実には何も実現していません。
| UnAceV2J.DLLのダウンロード(191 KB) |
UnAceV2J.DLLに対応したアプリケーションとしては今の時点で、VB De FilMtnがあります。