Creating your first CAB file
Purpose
This guide walks you through creating a CAB archive from scratch. You’ll learn how to bundle multiple files into a compressed CAB file using different compression algorithms.
Concepts
Creating a CAB archive involves:
-
Source Files: The files you want to archive
-
Compression Algorithm: How to compress the data (MSZIP, LZX, etc.)
-
Cabinet Structure: How files are organized into folders
-
Output File: The resulting
.cabfile
Prerequisites
-
Cabriolet installed (see Installation)
-
Some files to archive (text, images, executables, etc.)
Step 1: Prepare Your Files
Create a directory with files to archive:
mkdir my-project
cd my-project
echo "Hello, CAB!" > readme.txt
echo "Version 1.0" > version.txt
mkdir data
echo "Configuration" > data/config.iniYou should now have:
my-project/
readme.txt
version.txt
data/
config.iniStep 2: Create a Basic CAB
Create a CAB file with default settings (MSZIP compression):
cabriolet create my-archive.cab readme.txt version.txt data/config.iniCreating my-archive.cab...
Adding readme.txt (13 bytes)
Adding version.txt (12 bytes)
Adding data/config.ini (13 bytes)
Successfully created my-archive.cab (3 files, 38 bytes → 124 bytes total)
Compression ratio: 30.6% The create command is planned but not yet fully implemented. The examples below show the intended functionality. |
Step 3: Verify Your CAB
List the contents to verify:
cabriolet list my-archive.cabFiles in my-archive.cab:
readme.txt (13 bytes)
version.txt (12 bytes)
data/config.ini (13 bytes)
Total: 3 files, 38 bytes
Compression: MSZIPStep 4: Choose Compression Algorithm
Create CABs with different compression algorithms:
MSZIP (Default - ZIP/Deflate Compatible)
cabriolet create --compression=mszip my-archive-mszip.cab *.txtBest for:
-
General-purpose compression
-
Compatibility with ZIP tools
-
Moderate compression ratio
Step 5: Add Directory Recursively
Include all files from a directory:
# Recursively add all files
cabriolet create my-project.cab my-project/Or specify patterns:
# Add all .txt files
cabriolet create docs.cab **/*.txt
# Add multiple patterns
cabriolet create sources.cab **/*.rb **/*.mdCommon Scenarios
Creating a Software Installer
Bundle program files:
cabriolet create --compression=lzx installer.cab \
bin/program.exe \
lib/*.dll \
docs/readme.txt \
data/config.xmlUsing the Ruby API
Create CAB files programmatically:
require 'cabriolet'
# Create a new CAB with files
compressor = Cabriolet::CAB::Compressor.new
compressor.add_file('readme.txt')
compressor.add_file('version.txt')
compressor.write('my-archive.cab')require 'cabriolet'
# Create with LZX compression
compressor = Cabriolet::CAB::Compressor.new(compression: :lzx)
compressor.add_file('large-file.dat')
compressor.write('compressed.cab')require 'cabriolet'
compressor = Cabriolet::CAB::Compressor.new
Dir.glob('project/**/*').each do |file|
compressor.add_file(file) if File.file?(file)
end
compressor.write('project.cab')For complete API documentation, see API Reference.
Advanced Options
Multi-part CABs
Create split archives for large files (planned feature):
# Split into 1MB parts
cabriolet create --split=1M large-archive.cab big-files/This creates:
-
large-archive.cab(part 1) -
large-archive.ca2(part 2) -
large-archive.ca3(part 3) -
etc.
Compression Comparison
Test different algorithms on your data:
# Create with each algorithm
cabriolet create --compression=none uncompressed.cab data/
cabriolet create --compression=mszip mszip.cab data/
cabriolet create --compression=lzx lzx.cab data/
# Compare sizes
ls -lh *.cab| Algorithm | Size | Compression Ratio |
|---|---|---|
None | 1.2 MB | 0% (original) |
MSZIP | 450 KB | 62.5% |
LZX | 380 KB | 68.3% |
For detailed comparison, see Format Comparison.
Troubleshooting
Best practices
-
Choose appropriate compression:
-
MSZIP for general use
-
LZX for distribution
-
None for pre-compressed files
-
-
Test your archives:
cabriolet test my-archive.cab -
Keep source files: Don’t delete originals until verified
-
Document contents: Include a readme in the CAB
-
Version your CABs: Use descriptive names with versions
cabriolet create myapp-v1.0.cab src/
Next steps
Now that you can create CAB files:
-
Learn about compression algorithms
-
Explore other formats (CHM, SZDD, etc.)
-
Read about multi-part cabinets
-
Review performance tuning