常见问题解答(FAQ)

用户常见问题解答

我能否使用 7-Zip 用于商业用途?

可以,7-Zip 是自由软件。您可以在任何电脑上使用它,您不需要对 7-Zip 进行捐赠或付钱。

我如何在 Windows 7 以及 Windows Vista 中让 7-Zip 关联文件?

你必须以管理员方式运行一次 7-Zip 文件管理器。右键点击 7-Zip 文件管理器图标,选择“以管理员方式运行”。然后您就可以在设置中关联文件了。

哪些版本的 7-Zip 更加稳定?

目前 7-Zip 的稳定版本:

  • 7-Zip 9.20 - 7-Zip 9 系列的第 20 次修订(开始于 2009)

最新的 beta 测试版可能会修复之前版本的错误。所以有些时候可能也会更稳定。通常情况下使用测试版一样不会有什么危险。

为何在部分压缩包中无法进行添加、删除、更新等操作?

此操作只有在老版本的 7-Zip 中不支持。最新版本的 7-Zip 支持在固实压缩包中执行上述所有操作。

为何 7-Zip 无法打开部分 ZIP 压缩包?

绝大多数是因为该压缩包的文件头错误。ZIP 压缩包包含两个文件头,7-Zip 对两个文件头都进行读取,如果其中任意一个包含错误数据,7-Zip 就不会打开它。而其它支持 ZIP 格式的程序能够打开部分有错误的压缩包,因为那些程序通常只读取一分文件头,或者程序将错误的数据忽略。

所以,如果您有类似的压缩包,请不要向 7-Zip 技术支持询问其原因。您最好试着找到创建此压缩包的原程序,并向他们的技术支持发送错误报告,来告知它与 ZIP 格式不完全兼容。

目前同样还有一些 ZIP 压缩包使用的是 7-Zip 不支持的编码格式,例如 WAVPack (WinZip)。

为何 7-Zip 无法打开部分 RAR 压缩包?

7-Zip 目前仍不支持 RAR 5 格式,7-Zip 目前仅支持 RAR 2/3/4 格式。

为什么从 7-Zip 拖拽文件到 Windows 资源管理器时要先提取到临时文件?

7-Zip 并不知道拖拽到的目标路径。只有 Windows 文件管理器知道拖拽的目标路径。并且 Windows 资源管理器需要在硬盘上有已解压缩的文件才可以往下进行操作。所以 7-Zip 要先提取文件到临时文件夹,然后 7-Zip 会通知 Windows 资源管理器,之后由资源管理器将文件复制到拖拽的目标路径。

如果想避免使用临时文件,您可以使用提取命令,或在 7-Zip 文件管理器之内进行拖拽操作。

为什么在命令行版本中无法添加没有扩展名的文件?

您大概是使用了 *.* 通配符。7-Zip 使用的并不是系统处理通配符的默认方法,因而 7-Zip 不支持其它通配符规则,在系统中 *.* 相当于所有文件。而 7-Zip 会将其视为任何扩展名的全部文件。所以,要处理所有文件您必须使用 * 通配符。

为什么 -r 选项不会像我预期的那样执行?

通常情况下您并不需要使用 -r 选项。7-Zip 在没有 -r 选项的情况下一样可以压缩子文件夹。

示例 1:

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

压缩 "C:\Program Files" 目录,包括所有的子文件夹。

示例 2:

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

搜索并压缩 C:\ 中所有包含 "Program Files" 的文件夹(例如,在 "C:\WINDOWS" 中)。

如果您只想压缩特定的扩展,可以使用下面的方法:
  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

为什么 7-Zip 不能在 32 位 Windows 下使用更大的字典文件?

32 位 Windows 只能位每个应用程序分配 2 GB 的虚拟空间。同样这 2 GB 空间还会包含其他的文件碎片(例如一些要调用的 DLL 文件),所以 7-Zip 无法分配更大的虚拟空间。但在 64 位 Windows 中就不会有限制,如果您有足够大的物理内存,您可以使用任意大小的字典文件。

如何使用安静模式安装 7-Zip?

/S 用于安静模式安装;/D=dir,为指定的“输出目录”。7-Zip 现在使用的是 NSIS 安装程序。

For msi installer: Use the /q INSTALLDIR="C:\Program Files\7-Zip" parameters.

如何恢复受损的 7z 压缩包?

当您遇到下列情形时说明压缩包已受损:

  • 您可以打开压缩包并看到里面的文件,但是当您使用释放或测试功能时,提示「数据错误」或「CRC 校验错误」。
  • 当您尝试打开压缩包时,出现错误提示「无法作为压缩包打开文件『a.7z』」。

如果遇到上述情形,恢复部分数据是有可能的,请查看数据恢复流程:

恢复受损 7z 压缩包(英文,由于此页面会时常更新,并包含较多术语,原作者要求此页面保留英文)

开发者常见问题解答

为何我在使用 Visual C++ 6.0 编译 7-Zip 或 LZMA SDK 时会出现链接错误?

http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htmhttp://www.microsoft.com/msdownload/platformsdk/sdkupdate/

如果您使用 MSVC,请在目录列表上方的“包括文件”及“工具 / 选项 / 目录”中的“库文件”中指定 SDK 目录。

最新的 Platform SDK 与 MSVC6 不兼容。所以您必须使用 Windows Server 2003 PSDK(2003 二月)。

我能否使用 7-Zip 中的 EXE 或 DLL 文件用于商业用途?

可以,但是如果这样的话您必须在文档中注明:(1) 您使用了 7-Zip 程序的某部分文件 (2) 7-Zip 发布于 GNU LGPL 协议 (3) 必须有链接到 www.7-zip.org 的链接,能够找到 7-Zip 的源代码。

如何在我的程序中添加对 7z 格式的支持?

一种方法是使用 7za.dll(可到 sf.net 站点下载)。7za.dll 通过 COM 接口工作。但是它并没有使用标准的 COM 接口。您可以在源代码中找到一些例子。完整的例子就是 7-Zip 本身,7-Zip 本身就通过此 dll 允许。目前还有一些其它的应用程序使用了 7za.dll:WinRAR、PowerArchiver 等等。

其它的方法是调用命令行版本 7za.exe。

我能否在商业应用程序中使用 7-Zip 源代码?

7-Zip 基于 GNU LGPL 许可发布。所以您必须遵守此许可中的条款。简单的说,那意味着任何 LGPL 的代码必须在 LGPL 许可中保持完整性。例如,您可以更改 7-Zip 源代码,并且将它们编译成 DLL。但是这些更改后的 DLL 的源代码(包括您更改、增加、删除的内容)必须遵守 LGPL 或 GPL 许可。您的应用程序的其它源代码可以是属于任何许可的。想设想允许用户及开发者更改基于 LGPL 发布的代码并重编成 DLL。请到 http://www.gnu.org/ 了解更多信息。同样请参考 LZMA SDK 来了解更多高自由度的许可。


Copyright (C) 2017 Igor Pavlov. The site is hosted at AWS