I wrote a Java application for this (pure Java implementation). It does not support compression and therefore basically just packs the files together and adds the cabinet header to the system. This is not too difficult to do, took me about a day to bash.
I'm not too sure how difficult it would be to implement compression, but I assume that this is not all trivial. The network has available information about the structure of the file format in the cabinet.
EDIT: now available on github: https://github.com/grahamrb/CabinetMaker
source
share