7-Zip

ホーム
7zファイル
LZMA SDK
ダウンロード
FAQ
サポート
リンク

Frequently Asked Questions (FAQ)

ユーザー向けFAQ

7-Zipをビジネスの場で利用できますか?

はい。7-Zipはフリーソフトウェアです。どのコンピュータでも利用できます。7-Zipのために、登録や支払いは必要ありません。

Windows 7やWindows Vistaの環境で、7-Zipにファイルの関連付けを行うにはどうすればいいですか?

7-Zip File Managerを管理者モードで起動させる必要があります。7-Zip File Managerのアイコンを右クリックして、「管理者として実行」をクリックしてください。これで起動すれば、ファイルの関連付けやそのほかのオプションを変更できます。

新しいバージョンの7-Zipで圧縮した7zファイルは、どうして古いバージョンの7-Zipで圧縮したファイルより大きいのですか?

新しいバージョンの7-Zip(バージョン15.06以降)は、「solid」モードの7zアーカイブ(圧縮ファイル)を作成する際、デフォルトで異なるソート順を使っているためです。

古いバージョンの7-Zip (バージョン15.06より前)は、拡張子でファイルをソートしています。

新しいバージョンの7-Zipは2つのソート順を利用できます。

  • ファイル名でソート(デフォルトの順番)
  • 拡張子でソート。ファイル圧縮のダイアログのパラメータの欄で'qs'を指定した場合(もしくはコマンドラインバージョンで「-mqs」スイッチを指定した場合

ファイルサイズ合計より辞書サイズが小さい場合、ソーティング方法の違いが圧縮率に大きな影響を与えます。異なるフォルダに似たファイルが存在するようないくつかのケースでは、拡張子によるソートのほうが良い圧縮率になります。

拡張子によるソートにはいくつかの欠点があることに留意してください。たとえば、NTFSのファイルシステムではファイル名でソートしています。そのため、圧縮ファイルでファイル名ソート以外のソーティング方法を利用していた場合、いくつかファイル操作において想定と異なるソーティングがあることによってHDD上の性能が悪化します(HDDはシークが発生する処理が遅い)。

圧縮率を向上させるには以下の手段が取ることができます:

  • 辞書サイズを大きくする。'qs'のパラメータを使わない場合に役立つ
  • パラメータに'qs'を指定する (もしくはコマンドラインバージョンで「-mqs」スイッチを使う)

もし、想定しないファイルの順番が利用上の問題にならず、小さい辞書サイズでより良い圧縮率を得ることが重要と考えられる場合は、'qs'のモードを使ってください。

なぜ7-ZipではいくつかのZIP圧縮ファイルを開けないのですか?

そのような問題の99%は、そのアーカイブのヘッダーが間違っているためです。ほかのZIPプログラムは、間違ったヘッダーでもエラーを出力するだけで開いています。

もしそのようなアーカイブであったら、7-Zipの開発者に問い合わせないでください。その代りに、その間違ったヘッダーのアーカイブを作ったプログラムを特定し、その作者にZIPと互換がないことを教えてあげてください。

一方で、たとえばWAVPack (WinZip)のような、7-Zipでサポートしていない方法でエンコードされたZIPアーカイブもあります。

なぜ7-ZipでいくつかのRAR圧縮ファイルが開けないのですか?

7-Zip 9.20はRAR 2/3/4フォーマットの圧縮ファイルのみをサポートしており、RAR 5.0フォーマットの圧縮ファイルをサポートしていません。しかしながら、最新版7-Zipでは、RAR 5.0フォーマットの圧縮ファイルをサポートしています。

7-Zipからエクスプローラへのドラッグ&ドロップで圧縮ファイルを解凍するとき、なぜテンポラリファイルを使うのですか?

7-Zipは、ドロップターゲットのフォルダパスがわからないからです。Windowsのエクスプローラだけが正しいドロップターゲットを知っています。そして、Windowsのエクスプローラは、ディスク上に展開されたファイル(ドラッグソース)を必要とします。そのため、7-Zipはアーカイブからテンポラリフォルダにファイルを展開し、そして7-ZipはWindowsのエクスプローラにそのテンポラリファイルをのパスを知らせます。それからWindowsのエクスプローラは、それらのファイルをドロップターゲットのフォルダにコピーします。

テンポラリファイルを使いたくない場合は、7-Zipの展開コマンドか、7-Zipから7-Zipへドラッグ&ドロップしてください。

コマンドラインバージョンは、なぜ拡張子なしのファイルを追加しないのでしょうか?

「*.*」のワイルドカードを使っているのではないでしょうか。7-ZipはOS側のワイルドカードマスクパーサーを使っていないので、「*.*」は拡張子のある任意のファイルとなります。つまり任意のファイルを処理するには、代わりに「*」を使うか、ワイルドカードを省略する必要があります。

なぜ「-r」オプションは予想どおりに機能しないのですか?

多くの場合、「-r」オプションは必要ありません。7-Zipは、「-r」オプションがなくてもサブフォルダまで圧縮できます。

Example 1:

  7z.exe a c:\a.7z "C:\Program Files"

すべてのサブフォルダも含め、「C:\Program Files」を完全に圧縮します。

Example 2:

  7z.exe a -r c:\a.7z "C:\Program Files"

C:\のサブフォルダ(たとえばC:\WINDOWS)から「Program Files」を検索し、圧縮します。

もし、なんらかの拡張子の付いたファイルのみを圧縮したい場合は、「-r」オプションを使ってください。

  7z a -r c:\a.zip c:\dir\*.txt 

c:\dir\フォルダとそのサブフォルダにある、すべての*.txtファイルを圧縮します。

圧縮ファイルの中でファイルのフルパスを保持するにはどのようにすればいいですか?

7-Zipはファイルの相対パスのみを(前置されるドライブレターなしで)保存します。一般に行われているように、カレントフォルダを、圧縮したいすべてのファイルを参照できるフォルダに変更して、相対パスを使ってください。

  cd /D C:\dir1\
  7z.exe a c:\a.7z file1.txt dir2\file2.txt

32ビットのWindowsおいて、7-Zipは大きい辞書が使えないのですか?

32ビットのWindowsは、アプリケーションごとに2GBしか仮想メモリが割り当てられません。しかも、その2GBの領域は連続していないため(たとえばいくつかのDLLによって)、7-Zipは仮想メモリ上に1つの大きな連続領域を確保できません。64ビットWindowsであればこの制限はありません。そのため、大量の物理メモリさえあれば、Windows x64で任意の辞書を利用できます。

どのようにすると、7-Zipをサイレントモードでインストールできますか?

exe形式のインストーラの場合:サイレントインストールをするには「/S」パラメータを使います。「/D="C:\Program Files\7-Zip"」パラメータを使うと、出力ディレクトリを指定できます。このオプションは大文字小文字を区別します。

msiインストーラの場合:「/q INSTALLDIR="C:\Program Files\7-Zip"」というパラメータを使います。

壊れた7zファイルはどのように修復できますか?

圧縮ファイルが壊れているとき、いくつかのケースでは修復できます。

  • 圧縮ファイルが開け、ファイルリストも閲覧できるが、展開やテストが実行しようとすると、データエラーやCRCエラーが表示される場合
  • 圧縮ファイルを開いたとき、「'a.7z'が圧縮ファイルとして開けません」のようなメッセージが表示される場合

これらの場合、いくつかのデータは修復可能です。以下の修復手順を参照してください。

壊れた7z圧縮ファイルの修復方法(http://www.7-zip.org/recover.html)



開発者向けFAQ

Visual C++ 6.0で7-ZipやLZMA SDKをコンパイルすると、なぜリンクエラーが出るのですか?

コンパイルにはVisual C++ 6.0かそれ以上のバージョンに加え、microsoft.comのPlatform SDKを含むいくつかのファイルが必要です。

MSVCを使っている場合、SDKのディレクトリを「Include files」と「Library files」のディレクトリリストの先頭で指定してください。

最新のPlatform SDKはMSVC6と互換性がありません。そのため、MSVC6には、Windows Server 2003 PSDK (February 2003) を利用しなければなりません。

商用アプリケーションで7-ZipのEXEやDLLファイルを利用できますか?

はい。ただし、そのドキュメントに (1) それは7-Zipのプログラムの一部であり、(2)7-ZipはGNU LGPLのライセンスであることと、(3)www.7-zip.orgへリンクを張るなど、ソースコードの入手元を示す必要があります。

7zアーカイブへの対応を自分のアプリケーションに加えるにはどのようにすればいいでしょうか?

1つは、7z.dllもしくは7za.dll(sf.netからダウンロードできます)を使う方法です。7za.dllはCOMインターフェイスで動作します。ただし、オブジェクトの作成はスタンダードCOMインターフェイスではありません。ソースコードのCPP\7zip\UI\Client7zフォルダの中に簡単な例があります。完全な例は7-Zip自体です。7-ZipもこのDLLを使っています。WinRAR、PowerArchiverなど、そのほかのアプリケーションでも7za.dllの利用例はあります。

そのほかの方法としては、コマンドラインバージョンの7za.exeの利用があります。

7-Zipのソースコードを商用アプリケーションで利用できますか?

7-ZipのライセンスはGNU LGPLのため、以下のルールに従う必要があります。 要約すると、LGPLのコードの部分はLGPLのライセンスになります。そのため、7-Zipのコード修正や、7-Zipのコードからいくつかラッパーを作成し、DLLにコンパイルできます。一方で、その(修正や追加、作成したラッパーが含まれる)DLLのコードはLGPLかGPLのライセンスにする必要があります。そのほかのアプリケーションのコードは、任意のライセンスにすることができます。 このようにすることによって、ユーザーや開発者はLGPLのコードを修正したり、DLLにリコンパイルできるようになります。この考えがフリーソフトウェアです。詳しくは、https://www.gnu.org/を参照してください。また、LZMA SDKも参照してください。これには、ほかにもライブラリライセンスがあります。


Copyright (C) 2024 Igor Pavlov.