CAB (souborový formát)

CAB ([kæb]; z angl. cabinet [ˈkæbinit]; česky skříňka) je v softwarových produktech firmy Microsoft nativně používaný kompresní algoritmus pro instalační balíčky a současně přípona souboru pro tímto algoritmem vzniklé archivy. Formát, jehož soubory Microsoft nenazývá archivy, nýbrž balíčky, je využíván na instalačních médiích jeho operačních systémůaplikací.

Algoritmus je optimalizován pro co nejúčinnější kompresi souborů obsahujících strojový kód (spustitelných souborů a samostatných knihoven), ale velmi dobrých výsledků dosahuje také v případě textových souborů; o poznání horší výstupy zaznamenává stran multimediálního obsahu. Přestože se jedná o proprietární technologii, metoda komprese a dekomprese není obchodním tajemstvím – byla zveřejněna.

Vlastnosti

editovat

Z důvodu zachování zpětné kompatibility do již vytvořeného archivu nelze přidávat další soubory – pro změnu obsahu je nutné celý archiv vytvořit znovu. I proto – jelikož rozšiřování obsahu je typickou vlastností archivů – Microsoft tyto soubory jako archivy neoznačuje (jinou příčinou je přizpůsobení terminologii užívané konkurenčními operačními systémy a programy, konkrétně názvosloví linuxových distribucí).[pozn. 1]

Balíček může být rozprostřen přes více souborů.[pozn. 2]

Algoritmus nepodporuje šifrování.

Podpora

editovat

Každá verze systému Windows ve své standardní výbavě disponuje prostředky, jimiž lze k obsahu .cab souboru přistupovat – bez ohledu na to, zda tyto nástroje zpřístupňuje uživateli.[pozn. 3] V novějších verzích ke komprimovaným souborům uživatel může přistoupit prostřednictvím výchozího správce souborů, kterým je shell Průzkumník – archivy lze otevírat jako složky. Alternativu představuje systémový nástroj msconfig.

Jako příklady programů třetích stran[pozn. 4] pro práci s formátem .cab je možno jmenovat PowerArchiver nebo Cab File Maker; obě tyto aplikace balíčky dokáží vytvářet i rozbalovat.

Historie

editovat

Algoritmus byl využíván již v systémech MS-DOS (předchůdce MS Windows), ale jeho výstupy se neukládaly do souborů s příponou .cab. V prostředí MS-DOSu platilo, že v jednom archivu byl obsažen pouze jeden komprimovaný soubor, a jmenná konvence byla taková, že archiv (tehdy ne balíček) se jmenoval jako pojmutý soubor s tím, že místo třetího (posledního) znaku přípony měl znak podtržítka.

Archivy s jedním souborem a příponou končící podtržítkem se extrahovaly programem expand, jenž patřil do základní výbavy DOSu. Program se standardně volal se dvěma parametry: prvním byl název archivu, druhým jméno souboru, do něhož se měl zapsat výstup.[pozn. 5] Utilita expand.exe byla pevnou součástí softwarového vybavení operačních systémů firmy Microsoft od MS-DOSu verze 5.0 do Windows Millenium Edition.

Jiné významy

editovat

Přípona .cab je používána taktéž jinými vývojáři softwaru než společností Microsoft; obvyklé je to u tvůrců počítačových her. Proto se může stát, že se najde soubor s touto příponou, jejž nástrojem pro práci s formátem .cab firmy Microsoft nebude možné zpracovat, ačkoli tento soubor bude konzistentní.

Související články

editovat

Poznámky

editovat
  1. Ve srovnání s linuxovými instalačním balíčky v souborech .cab nejsou zahrnuty instalační instrukce – tyto obsahují pouze data pro instalaci.
  2. Smyslem je umožnit pohodlný přenos archivu i tehdy, když jeho velikost přesáhne kapacitu k tomuto účelu použitého média.
  3. Navzdory tomu, že CAB je dílo Microsoftu, oficiální archivační metoda v Microsoft Windows je ZIP, a to od Windows 98 Second Edition. Je však třeba uvést, že oficiální kompresní algoritmus by měl být přenositelný mezi platformami, a připomenout, že CAB je optimalizován pro kompresi strojového kódu, zatímco oficiálnímu kompresnímu algoritmu podléhají data všeho druhu.
  4. Programy třetích stran jsou programy, jež k práci s daným formátem dat nejsou schváleny jeho tvůrcem, resp. správcem.
  5. Vzhledem k počtu různých běžně užívaných přípon a tomu, že komprimovány byly zpravidla binární soubory s příponami .com, .dll a .exe, nebylo obtížné si znak chybějící v názvu souboru domyslet.