7-Zip logo Menu button

常見問題(FAQ)

普通用戶常見問題

商業機構可否使用 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 版開始)變更了結實壓縮預設的檔案排序方法。

舊版本 7-Zip(15.06 版之前)的檔案排序方法是「依類型」(「依副檔名」)。

新版本 7-Zip 提供兩種排序方法:

當字典大小小於檔案的總大小時,排序方法對壓縮比率會有重大影響。如果不同資料夾中有相似類型的檔案,選擇「依類型」排序在部分個案中可以提高壓縮比率。

請注意「依類型」排序亦有缺點,例如 NTFS 磁碟區的排序方法是「依名稱」,如果壓縮檔使用另一排序方法,當進行某些檔案操作時,速度可能會被機械硬碟所限(機械硬碟的搜尋(seek)速度較低)。

總括而言,通過以下方法可提高壓縮比率:

如不介意檔案如何排序,只想以較小的字典達至更佳的壓縮比率,那麽請用 qs 模式。

為何 7-Zip 不能開啟部分 ZIP 壓縮檔?

百分之九十九的個案是因為這些壓縮檔的文件頭有錯誤,其他 ZIP 解壓程式忽略這些錯誤,所以能開啟部分有問題的壓縮檔。

如有類似壓縮檔,不用聯絡 7-Zip 的程式設計員,因為問題癥結不在 7-Zip 而在於製作這些壓縮檔的程式。請查明是哪個程式製作的,然後通知它的程式設計員它製成的壓縮檔不符合 ZIP 格式。

除此之外,某些 ZIP 壓縮檔以 7-Zip 不支援的方法編碼,例如 WAVPack(WinZip)。

為何 7-Zip 不能開啟部分 RAR 壓縮檔?

7-Zip 9.20 版只支援 RAR 2/3/4 檔案格式,不支援 RAR5 檔案格式,不過最新版本的 7-Zip 已能開啟 RAR5 壓縮檔。

由 7-Zip 拖放(drag and drop)壓縮檔到微軟視窗的檔案總管時,為何使用暫存檔案?

7-Zip 不知道壓縮檔被放到哪個資料夾,檔案總管才知道,另外檔案總管要求來源是已解壓縮的檔案,故此 7-Zip 解壓縮檔案到暫存資料夾並通知檔案總管,檔案總管再從暫存資料夾複製檔案到最終目的地。

如不想使用暫存檔案,請用 7-Zip 程式內的解壓縮功能,或由 7-Zip 拖放到 7-Zip。

使用命令行介面時,為何無法增加沒有副檔名的檔案到壓縮檔?

您大概是用了 *.* 通配符。7-Zip 並不使用作業系統的通配符語法分析器,故此視 *.* 為任何有副檔名的檔案。如要包括所有檔案,請使用 * 通配符,或完全不用通配符。

為何 -r 命令行選項不如預期般運作?

其實大多數情況都無須使用 -r 選項。就算沒有 -r 選項,7-Zip 都會壓縮子資料夾。

例子 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:\ 的子資料夾(例如 "C:\WINDOWS"),找出並壓縮所有 "Program Files"。

如要找出特定副檔名的檔案來壓縮,這時 -r 選項就派上用場:

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

搜索 c:\dir\ 資料夾及它的子資料夾,找出並壓縮所有 *.txt 檔案。

如何將檔案的完整路徑儲存到壓縮檔?

7-Zip 只會儲存檔案的相對路徑(沒有磁碟機代號)。只要用 cd 命令變更當前資料夾(current folder),使所有要壓縮的檔案都在當前資料夾之下,那麽就不須使用完整路徑,只用相對路徑就可以。例子:

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

為何 7-Zip 無法於 32 位微軟視窗使用較大的字典?

32 位微軟視窗只能分配 2GB 的虛擬空間給每一應用程式,而且那 2GB 空間可能不連續(例如被一些 DLL 檔案分間),故此 7-Zip 不能得到一大段連續的虛擬空間。64 位微軟視窗則沒有這個限制,只要實體記憶體足夠,使用任何大小的字典都可以。

如何以安靜模式安裝 7-Zip?

exe 安裝程式:請利用 "/S" 參數進入安靜模式,並使用 /D="C:\Program Files\7-Zip" 參數指定資料夾,注意這些參數是區分大小寫的。

msi 安裝程式:請使用 /q INSTALLDIR="C:\Program Files\7-Zip" 參數。

如何修復損毀的 7z 壓縮檔?

壓縮檔受損後可能出現的兩個情況:

修復部分數據是可能的,詳細修復步驟請參看以下網頁:

修復損毀的 7z 壓縮檔(英文)



程式開發人員常見問題

使用 Visual C++ 6.0 編譯 7-Zip 或 LZMA 軟體開發套件時,為何會出現連結錯誤?

要編譯原始碼,您須要 Visual C++ 6.0 或更新版本,另外部分檔案須要 microsoft.com 新版本的 Platform SDK 才可編譯。

如使用 MSVC,請到 "Tools / Options / Directories",然後在 "Include files" 及 "Library files" 兩個資料夾清單上方指定 SDK 資料夾的位置。

由於最新版本的 Platform SDK 不兼容 MSVC6,故此 MSVC6 必須使用 Windows Server 2003 PSDK(2003 年 2 月)。

我可否在商業應用程式中使用 7-Zip 的 EXE 或 DLL 檔案?

可以,但您必須在程式文件中註明 (1) 您使用了 7-Zip 程式的部件,(2) 7-Zip 採用 GNU LGPL 許可證,及 (3) 您必須連結到 www.7-zip.org,即原始碼存放的地方。

如何使我的應用程式支援 7z 壓縮檔?

其中一個方法是利用 7z.dll 或 7za.dll(可從 sf.net 下載)。7za.dll 以 COM 介面運作,但它不使用標準 COM 介面來建立物件,原始碼中的 "CPP\7zip\UI\Client7z" 資料夾有一個小範例。如要完整範例,請參考 7-Zip 本身,因為 7-Zip 也是利用這個 dll 檔案來運作。其他使用 7za.dll 的應用程式有 WinRAR、PowerArchiver 等等。

另一個方法是使用命令行介面的執行檔 7za.exe。

我可否在商業應用程式中使用 7-Zip 的原始碼?

由於 7-Zip 以 GNU LGPL 許可證發布,故此您必須遵從這個許可證的條款。簡言之,任何以 LGPL 許可證發布的原始碼往後必須繼續採用 LGPL 許可證,例如您可修改 7-Zip 的原始碼或編寫一個包裝程序(wrapper)封裝某些 7-Zip 原始碼,然後把它編譯成一個 DLL 檔案,但是此 DLL 檔案的原始碼(包括您做的修改、增添、包裝程序)必須採用 LGPL 或 GPL 許可證,而您的應用程式的其他原始碼則可以採用您自行選擇的許可證。此方案容許普通用戶及程式開發人員修改採用了 LGPL 許可證的原始碼及重新編譯那個 DLL 檔案,這就是自由軟體的概念。詳情請參閱 https://www.gnu.org/。 另外您亦可能有興趣了解一下 LZMA 軟體開發套件,它採用一個條款較為寬鬆的許可證。


Copyright © 2021 Igor Pavlov.
Chinese translation by DevelopersHome.com.