CubeICE に含まれる 7-Zip を手動で更新する方法

本日、CubeICE 0.9.0 β をリリースしました。修正内容は リリースノート に任せるとして、この記事では CubeICE で利用している 7-Zip のカスタマイズ版ライブラリの概要と、7-Zip ライブラリのみを更新する方法について記述します。

概要

CubeICE は、実際の圧縮・解凍処理を全て 7-Zip に頼った実装となっていますが、オリジナルの 7-Zip ライブラリ (7z.dll) に対して文字コードの推測処理を追加し、Unicode 文字セット*1 でビルドするようにカスタマイズしています。このカスタマイズ版 7-Zip のソースコードおよびビルド結果は cube-soft/7z - GitHub より取得する事ができます。

今回、この記事を執筆しようと思った理由は、CubeICE のバージョンアップが間に合わない時のために、7-Zip だけでも更新できる方法を公開しておいた方が良いと思ったためでした。先日、「7-Zip」に任意コード実行の脆弱性、修正版の v18.05 が公開 と言う記事で報道された通り、2018/04/30 に公開された 7-Zip 18.05 には脆弱性に対する修正も含まれていましたが、諸々の都合で 7-Zip の該当バージョンを適用した CubeICE がリリースされるまでに 3 週間強のタイムラグが発生する事となりました。

カスタマイズ版 7-Zip のオリジナル版への追随に関しては、圧縮・解凍ソフト CubeICE をゼロから改修 した段階で楽に実現できるように改善されたため、多くの場合で、CubeICE のバージョンアップのかなり前の段階で利用可能な状態となります。そのため、7-Zip 由来の脆弱性等に関しては、これらのライブラリを差し換える事で CubeICE のバージョンアップ前であっても対応する事ができます。

手動による更新方法

CubeICE のバージョン確認

まず、CubeICE のバージョンを確認して下さい。CubeICE のバージョンは「CubeICE 設定」の「バージョン情報」タブで確認する事ができます。この時、バージョンが 0.8.0β 未満(0.7.3β や 0.6.8β など)の場合は CubeICE を最新版にアップデートして下さい。CubeICE は 0.8.0β にて大幅な変更が加えられていますので、それ以前のバージョンには適応できない可能性があります。バージョンが問題なければ、その右隣に記述されている文字列(x86 または x64)を覚えておいて下さい。

次に、 Releases - cube-soft/7z - GitHub へ移動します。ここで、先ほどのバージョン表示画面で確認した x86/x64 に対応する Zip ファイルをダウンロードして下さい。ダウンロード終了後、解凍したフォルダにある 7z.dll と 7z.sfx のファイルを CubeICE のインストールフォルダ(初期設定では C:\Program Files\CubeICE)にコピーして差し換えると、手動による 7-Zip の更新作業は完了です。

*1:Visual C++ の設定には、Unicode 文字セットでビルドする方法とマルチバイト文字セットでビルドする方法の 2 種類が提供されています。