CAB 檔案格式

CAB(Cabinet)歸檔檔案用於以壓縮格式打包檔案和目錄,這樣可以減少檔案的大小並方便地將它們分發到一個容器中。此格式常用於 Windows 作業系統中的安裝套件和軟體更新。

關於 CAB 檔案資訊

CAB 存檔 用於檔案的高效儲存和分發,特別是在 Windows 作業系統中。 CAB 檔案使用各種壓縮演算法(包括 LZX、MSZIP 和 Quantum)來減少其包含的檔案的大小。這些存檔可以將多個檔案和目錄儲存在單一壓縮檔案中,從而保持目錄結構。 CAB 存檔通常用於軟體安裝套件、驅動程式分發和 Windows 更新。它們支援數位簽名,允許驗證存檔中文件的完整性和真實性。

CAB歷史資訊

  • 1994 年:Microsoft 引入 CAB 檔案格式,以方便軟體包和更新的分發。
  • 1995 年:CAB 檔案被用於在 Windows 95 中安裝應用程式。
  • 2000 年:CAB 檔案成為 Windows Installer (.msi) 技術的組成部分,有助於在 Windows 2000 上部署應用程式。
  • 2001 年:CAB 格式包含在 .NET Framework SDK 中,增強了其在各種開發環境中的實用性。
  • 2005 年:Microsoft 隨著 Windows XP 和 Windows Server 2003 的發布擴大了 CAB 的使用,將它們用於系統更新和驅動程式安裝。
  • 2008 年:隨著 Windows Vista 和 Windows Server 2008 的推出,CAB 檔案繼續在 Windows 更新和服務套件中廣泛使用。
  • 2012 年:Windows 8 和 Windows Server 2012 作業系統支援 CAB 文件,保持其在軟體部署和系統更新中的作用。
  • 2021 年:CAB 檔案仍然是 Windows 生態系統的重要組成部分,用於 Windows 11 中的驅動程式部署、系統更新和軟體安裝。

內閣文件的結構

CAB 是一種二進位檔案格式,旨在將多個壓縮檔案儲存在一個檔案中,使其適合軟體分發和部署。 CAB 存檔由三個主要部分組成:

  1. 標頭:標頭包含有關存檔的元數據,例如文件總數、資料夾數量以及有關所使用的壓縮方法的資訊。
  2. 資料夾結構:CAB 檔案可以包含多個資料夾結構,每個資料夾結構代表檔案的邏輯分組。 CAB 檔案中的每個資料夾條目都包含有關其保存的檔案和所使用的壓縮方法的資訊。
  3. 檔案資料:實際檔案資料儲存在 CAB 檔案中,使用幾種支援的演算法之一進行壓縮。每個檔案的資料通常儲存在區塊中,以便進行有效的壓縮和解壓縮。

CAB 壓縮方法

  1. MSZIP:一種基於 ZIP 檔案中使用的 DEFLATE 演算法的壓縮演算法。 MSZIP 在壓縮率和速度之間提供了良好的平衡,使其成為 CAB 檔案的熱門選擇。
  2. Quantum:一些 CAB 檔案中使用的較舊的壓縮方法。 Quantum 如今較不常見,但曾用於 CAB 格式的早期實作。
  3. LZX:一種高壓縮演算法,與 MSZIP 相比,可提供更好的壓縮比,但代價是壓縮和解壓縮速度較慢。 LZX 非常適合用來縮小大型軟體套件和安裝檔案的大小。
  4. 未壓縮:CAB 檔案還可以儲存未壓縮的數據,這在不需要壓縮或需要快速存取檔案時非常有用。

CAB 存檔支援多種壓縮方法來有效地儲存資料。主要的壓縮方法包括:

.cab 支援的操作

雖然 Aspose.Zip 目前不提供創建 CAB 檔案的功能,但它擅長提取其內容。以下是您可以實現的目標的詳細說明:

  • 完全提取:您可以使用 API 從 CAB 檔案中提取所有檔案和資料夾。
  • 選擇性提取:根據名稱或過濾器提取特定檔案或資料夾。
  • 維護資料夾結構:提取的檔案在 CAB 檔案中保留其原始資料夾結構。

CAB - 內部結構

Cabinet (CAB) 存檔格式專為在單一檔案中有效壓縮和儲存多個檔案而設計。它通常用於軟體分發,特別是在 Microsoft 環境中。以下是 CAB 存檔結構的概述:

  1. 標頭: CAB 檔案以標頭開頭,其中包含有關存檔的基本元數據,例如:

    • 簽章:將檔案標識為 CAB 檔案(ASCII 字串「MSCF」)。
    • 保留欄位:供將來使用或特定實作細節的各種保留欄位。
    • 存檔大小:CAB 檔案的總大小。
    • 資料夾數量:表示存檔中有多少個資料夾結構(檔案的邏輯群組)。
    • 檔案數:CAB 檔案中儲存的檔案總數。
    • 到第一個 CFFOLDER 的偏移:指向存檔中的第一個資料夾條目。
    • 保留:附加保留欄位。
  2. 資料夾結構: 每個CAB檔案可以包含多個資料夾結構。每個資料夾條目提供:

    • 偏移量:CAB 檔案中此資料夾資料開始的位置。
    • 資料塊數量:表示資料夾中有多少個資料塊。
    • 壓縮類型:指定用於此資料夾中的檔案的壓縮方法(例如 MSZIP、LZX)。
  3. 文件條目: CAB 存檔包含每個文件的條目,詳細說明:

    • 未壓縮大小:壓縮前檔案的原始大小。
    • 偏移量:CAB 檔案中壓縮檔案資料開始的位置。
    • 資料夾索引:指定檔案所屬的資料夾。
    • 屬性:檔案屬性(例如唯讀、隱藏)。
    • 檔案名稱長度:檔案名稱的長度。
    • 檔案名稱:檔案的名稱。
  4. 資料塊: 實際的檔案資料儲存在壓縮資料塊中。每個區塊包括:

    • 壓縮資料:依照指定方法(例如MSZIP、LZX)壓縮的檔案資料。
    • 解壓縮資訊:解壓縮資料塊所需的元數據,例如原始大小和壓縮大小。
  5. 可選數據: 某些 CAB 存檔可能包含用於擴展功能的附加可選數據,例如:

    • 完整性校驗和:驗證存檔的完整性。
    • 數位簽章:確保檔案的真實性。

CAB - 內部結構

CAB 的受歡迎程度和支持

CAB 檔案廣泛用於 Windows 中的軟體安裝、更新和驅動程式分發。 Microsoft 提供了 MakeCab、Expand 和 DISM 等工具來建立、擷取和管理 CAB 檔案。 CAB 檔案提供高效壓縮,與 Windows Installer 集成,並可用於多部分存檔。

使用內閣文件的範例

CAB 檔案使用 LZX、MSZIP 或 Quantum 等壓縮演算法以壓縮形式儲存檔案。它們允許您將多個檔案儲存在一個檔案中,同時保留目錄結構。以下是用 C#、Java 和 Python.Net 解壓縮 CAB 檔案的程式碼範例:

C#

    using (var archive = new CabArchive("installer.cab")) 
    { 
    archive.ExtractToDirectory(@"C:\extracted");
    }

Java

    try (CabArchive archive = new CabArchive("installer.cab")) {
    archive.extractToDirectory("C:\\extracted");
    }

Python.Net

    import aspose.zip as az
    with az.cab.CabArchive('installer.cab') as archive:
        archive.extract_to_directory("C:\\extracted")

Aspose.Zip offers individual archive processing APIs for popular development environments, listed below:

Aspose.Zip for .NETAspose.Zip via JavaAspose.Zip via Python.NET

附加資訊

人們一直在問

1. 什麼是 CAB 檔案以及它的用途是什麼?

Cabinet 檔案是 Microsoft 主要用於高效分發和安裝軟體、系統元件和驅動程式的存檔檔案。它們支援多種壓縮演算法,例如 MSZIP、Quantum 和 LZX,以減小檔案大小,同時保持結構化、有組織的格式來管理所包含的檔案。

2. CAB 檔案可以分成多個部分嗎?

是的,CAB 檔案支援建立多部分存檔。此功能對於將大型資料集分佈在多個較小的 CAB 檔案中非常有用,從而可以更輕鬆地管理和傳輸大量資料。提取多部分 CAB 檔案時,所有部分都必須存在且可訪問,才能成功重建原始檔案。

3. 我可以自己建立 CAB 檔案嗎?

雖然可以手動建立 CAB 文件,但使用 MakeCab(Microsoft 實用程式)等專用工具或其他支援 CAB 格式的存檔軟體通常更方便。