16 June 2010

CabIt : A Re-Interface of Makecab and Expand

Recently during updating my unattended Windows XP CD, I create a small utility (eek written in batch) called CabIt. That time I try to achieved a much compressed DRIVER.CAB for the CD and find out that cabtool (an opensource utility) didn't satisfied me.

Later I'm puzzling with makecab.exe a builtin tool in Windows to create Cabinet file. No luck.. it always generate *.??_ file :(  only after googling a while I found Cabinet SDK from M$ that dated way back in 1997!

But guess what I found? Cabinet format indeed support "solid archiving" at that time! "Solid" which is a (marketing) term that popularized by WinRAR and followed by 7Zip is what M$ called (an ambiguous term) "folder" to explain the same functionality (Compressing a set of files as a union). Also I found out detailed info how to make a DDF file that needed by makecab.exe to properly produce .cab file. So CabIt is born, basically as an automatic DDF generator.



Knowing that Cabinet support solid mode I try to generate DDF files that being sorted by extension instead of name (similar to 7zip's file listing). The result on DRIVER.CAB is quite improved from Cabtool.exe

Cabtool: 83MB
CabIt: 75MB (almost 10% smaller)

After done with my unattended XP CD. I decide to add more and more feature to CabIt and bumped it to version 0.2 (if it can be considered as software).

Supported features that missing in Cabtool
as SendTo handler (like Cabtool) :
- multiple file or folder as input (limited by Windows specification, 7even has higher limit)
- smart autonaming like 7-Zip when given multiple input
- better compression ratio
- compress hidden files and folders
- more flexible output
- built-in non administration-mode installer (one click install/uninstall/update)
- support output up to 2GB output file (maximum that cabinet allowed)
- small! less than 10Kb including onscreen help

Command Line mode in addition to above features (N/A in Cabtool):
- wildcard input support, like *.*, Document\???.xls
- file pattern filter for recursive folder
- option to only generate ddf file that can be edited and used later for makecab
- option to use fast mode (using MSZIP compression)
- support user defined file splitting

Know issue:
- Not working in UNC path (network path) -> cmd limitation
- Probably not working on unicode filename neither cabtool
- Cabinet file detection maybe less accurate than cabtool since I used manual method cause M$ expand didn't even know how
- Cabtool may faster at compressing... this is due to different sorting method that I use
- Expanding .cab file only supported in Vista or later due to XP's expand don't extract path

Planned:
- Global sorting (more closer to 7Zip). Currently hurt DDF generation performance badly

Download CabIt-0.2.cab 4Kb (under GPL 2.1 or later)
To install just double click the cabit.cmd file. It will installed to your Start menu and SendTo menu:


2 comments:

  1. Could you re-upload CabIt-0.2.cab

    ReplyDelete
  2. Found it:
    http://osspack32.googlecode.com/files/CabIt-0.2.cab

    ReplyDelete