Lhaplus の代わりに 7-Zip ZS (Zstandard 対応版) で ZIP や 7z をダブルクリックで一発解凍したい

6年半以上騙し騙し使い続けてきた Core i5-8250U のノート PC が、いよいよ本格的に挙動不審になってきた。
具体的にはメモリ破壊で起動中の Chromium 系ソフトウェアが一斉にクラッシュする、本来の性能より明らかに重くなりすぎているなど…。
労働での Windows 環境での検証タスクに支障することもあり、大変重い腰を上げて、1年半くらい死蔵させていた PC パーツで久々にデスクトップ PC を自作した。OS は当然 Windows 11 (24H2) 。

PC 組み立て自体はせいぜい数時間で終わったが、問題は新メイン Windows PC に今まで使ってきた各ソフトウェアの環境を構築する移行作業。
これがあまりにも億劫だったせいで、1年以上前に Amazon セールでほとんどの部品を揃えていたのに実際の組み立てまで1年以上放置する羽目になっていたほどだ。

結局キッティングに1週間近く掛かってしまったが、ようやく従来環境以上に快適な PC 環境になってきた。
その中でも 7-Zip 周りの設定についてかなり試行錯誤する羽目になったので、ここに備忘録を残しておく。

Sponsored Link

Lhaplus と 7-Zip と 7-Zip ZS

さて、あなたは Windows での圧縮ファイル (zip, 7z など) の解凍に何のソフトを使っているだろうか。
さすがにイマドキ Lhaplus を使ってるなんて人は…いないですよね?

私も昔は『ダブルクリックで解凍できる」ので lhaplus を使っていたが、2017年以降メンテが放棄されている問題Unicode 文字列に正しく対応しておらず文字化けする などの問題がある。
より多くの形式に対応していて堅牢なソフトを求めていたこともあり、4年ほど前にオープンソースで鉄板の圧縮解凍ソフトである、7-Zip に切り替えた。

ZIP より高圧縮で巨大ファイルに対応していることで知られる .7z 形式自体、7-Zip が最初に開発・対応したものだそう。

UNICODE ZIPに対応した圧縮/解凍ソフトについて - Qiita
概要ZIPファイルはPhil Katzさん(PKWARE)が開発した、主に Windows 向けの圧縮ファイル コンテナです。Windows XPでExplorerが対応した為か、今ではほぼ標準…

日本において Unicode 対応した ZIP ファイルが普及していないのは Lhaplus のせいなので (確か Mac で解凍するともれなく文字化けしたりする) 、新規にインストールすべきではない。
そもそも Unicode な ZIP ファイルにちゃんと対応しているツールは多くない模様。

その 7-Zip 自体も、実は機能追加やメンテナンスがスローペースな傾向にある。
もちろん既にかなり完成されたソフトなのもあるとは思うが、新しくて圧縮率と速度に優れた圧縮アルゴリズムである Zstandard (.zst) に長らく対応していなかったり(最近出た 7-Zip 24 で一応対応されたらしい)、後は UI や関連付けされるアイコンがダサかったり…。

GitHub - mcmilk/7-Zip-zstd: 7-Zip with support for Brotli, Fast-LZMA2, Lizard, LZ4, LZ5 and Zstandard
7-Zip with support for Brotli, Fast-LZMA2, Lizard, LZ4, LZ5 and Zstandard - mcmilk/7-Zip-zstd

そこで使いたいのが、7-Zip の派生版である、7-Zip ZS (7-Zip Zstandard) 。
Zstandard や Brotli などの新しい圧縮アルゴリズムにも対応しているほか、地味に 7-Zip File Manager や関連付けされたアイコンがモダナイズされていたりなど、既存機能を保ちつつ細かく改良されているのが特徴。
せっかくの新 PC なので、ここはよりモダンな 7-Zip ZS を最初からインストールしておきたいところ。

7-Zip ZS のインストールは非常に簡単(インストーラーを実行するだけ)で、明示的にインストール先を変更しなければ、C:\Program Files\7-Zip-Zstandard 以下にインストールされる。


しかし、7-Zip やその派生版の 7-Zip ZS は、デフォルトではダブルクリックで解凍してくれない。

「ダブルクリックで解凍はセキュリティ習慣上良くない」「エクスプローラー標準の解凍機能で良いだろ」という声もなくはないが、安全なことが分かっている ZIP ファイルをすぐに解凍して中身を特定フォルダに持っていきたい時、ダブルクリック → 展開先フォルダの確認 → 展開 で2ステップ入るだけで、作業効率がダダ下がりする…

とはいえ、オリジナルの 7-Zip を使っていた旧 PC は、いろいろググって見つけた こちら のレジストリ設定ファイル (7-zip-default-extract.reg) を DL 後適用することで、Lhaplus 同様ダブルクリックで一発解凍できるようにできていた。
旧 PC で 7-Zip ZS に移行した際も、インストール先をオリジナルの 7-Zip 同様に C:\Program Files\7-Zip に変更していたからか、適用したレジストリ設定がそのまま動作していた。

しかし、今回 7-Zip ZS の最新版をインストールした上で、7-zip-default-extract.reg を適用させてみても効果がなかった。
いろいろ調べまくった結果、原因は2つある。

  1. 旧 PC では 7-Zip ZS をオリジナルの 7-Zip に上書きする形で C:\Program Files\7-Zip にインストールしていたが、今回は既定の C:\Program Files\7-Zip-Zstandard にインストールしたこと。
  2. 旧バージョン (21.03 ZS v1.5.0 R2) の7-Zip ZSでは、ファイル関連付けに使われるレジストリの識別子が、オリジナルの 7-Zipと同じ 7-Zip だったこと。
    • 最新の7-Zip ZSではこの識別子が 7-Zip-Zstandard に変更されている(つまりオリジナルの 7-Zip と設定が競合しないよう配慮されている)ため、オリジナルの 7-Zip 向けな上に2019年に書かれた 7-zip-default-extract.reg では効かないというわけ。

そこで試行錯誤の末に、7-Zip ZS でダブルクリックで一発解凍するための新しいレジストリ設定ファイル (7-zip-zstandard-default-extract.reg) を作成した。

このレジストリ設定ファイルでは、7-Zip ZS が対応しているすべての拡張子をダブルクリックで一発解凍できるようにしている。
特に .zstd のような、7-Zip ZS で追加対応された新しい形式も含まれている点がポイントだ。

ダブルクリックで解凍するためのレジストリ設定ファイルの適用手順

レジストリ設定ファイルを適用するためには、以下のステップに従うとよい。

1. 7-Zip ZSの初期設定

まず、7-Zip ZSで圧縮ファイルを開くための関連付けを行う。
このステップより前に .reg を適用すると諸々拗れるので注意(私はここでド嵌りした…)。

  1. C:\Program Files\7-Zip-Zstandard\7zFM.exe (7-Zip ZS File Manager) を開く。
  2. メニューから「ツール」->「オプション」をクリック、オプションダイヤログを開く。
  3. 「+」ボタンを押して、現在のユーザーとすべてのユーザー両方に対して、7-Zip ZS でファイルを開くように関連付ける。
    • 分かりにくいが、左側の「+」ボタンが現在ログオン中のユーザーのみに適用、右側の「+」ボタンが PC 内のすべてのユーザーに適用するためのボタンらしい。
    • ボタンを何回か押すと関連付けのオンオフが切り替わる。

2. 7-zip-zstandard-default-extract.reg の適用

次に、私の GitHub Gist からダウンロードした、7-zip-zstandard-default-extract.reg を適用する

このレジストリ設定ファイルは(上記ステップで関連付けた)7-Zip ZS が対応しているすべての拡張子に対応しており、例えば .zst ファイルもダブルクリックで展開できるようになる。

.reg ファイルの中身やレジストリエディターで見てもらえれば分かるが、レジストリの HKEY_CLASSES_ROOT\7-Zip-Zstandard.(圧縮ファイルの拡張子)\shell に、7-Zip ZS が対応する各拡張子ごとの既定のアクションが定義されている。

7-Zip ZS File Manager でファイルの関連付けを変更した時点ではアクションは「開く」(open) だけが定義されており、実行コマンドは C:\Program Files\7-Zip-Zstandard\7zFM.exe になっている。この状態だと 7-Zip ZS File Manager の画面が開くだけで、私が望んでいる一発解凍にはならない。
さらに「開く」アクションは特別扱いされているのか、実行コマンドでの実行ファイルパスを 7zFM.exe から 7zG.exe など異なる実行ファイルに変更しても無視されてしまう。

そこで、通常の「開く」(open) ではなく「Extract to Folder」(extract) という今回新しく定義したアクションをデフォルトのアクションに設定した上で、当該アクションで実行されるコマンドに 7zG.exe へのコマンドライン引数を指定している。(このあたりは 大元の .reg ファイル でのアイデアをそのまま活用した)
7zG.exe は通常のコマンドライン引数を受け入れるので、x を指定して %1 に渡されたファイルに対して解凍を指示している。

実際、上記を適用した Windows 11 環境で Shift + 右クリックすると(注:Windows 11 では従来のコンテキストメニューが既定で隠されている)、「開く」より上に「Extract to Folder」が表示される。
この「Extract to Folder」が 7-zip-zstandard-default-extract.reg の適用により追加されたアクションである。その下の「開く」をクリックすれば、デフォルト通り 7zFM.exe が起動する。

3. ファイルの関連付けを手動で調整する

この段階で、もしまだ .zip などの拡張子がエクスプローラーに関連付けられている場合は、以下の手順で手動で調整する。

Windows 8.1 まではレジストリをいじるだけで関連付けできていた?らしいが、Windows 11 以降では UI から別途関連付けを変更しないとダメな場合があるらしい。この辺はよくわからん・・・。

  1. 該当するファイル(例:.zip)のプロパティを開く。
  2. 「プログラムから開く」もしくは「既定のアプリ」を変更し、”7-Zip GUI” (C:\Program Files\7-Zip-Zstandard\7zG.exe)に設定する。
    • 注意すべき点は、ここで設定するのは 7zFM.exe (7-Zip ZS File Manager) ではなく、7zG.exe (7-Zip GUI) である。7-zip File Manager はコマンドライン引数に対応していない。
    • 7zG.exe は 7-Zip GUI といいつつ CLI アプリケーションだが、7z.exe とは進捗状況がコンソールではなく GUI ダイヤログに表示される点で異なる。

4. 再起動して動作確認

これでダブルクリックで圧縮ファイルを展開できるようになり、.zip などのアイコンも 7-Zip ZS のものに変更されているはず。

しかし、場合によってはまだうまくいかないことがあるかもしれない。その際は一度 PC を再起動してみるか、エクスプローラーを再起動してみるとうまくいくと思う。
アイコンが変更されない際は、一度 アイコンキャッシュを削除 してみるのも有効だ。

コメント