Software Distribution with Cabriolet
Overview
Using CAB archives for software distribution provides compression, multi-volume support, and Windows compatibility.
Creating Distribution Package
require 'cabriolet'
# Create software distribution CAB
cab = Cabriolet::CAB::Compressor.new(
output: 'myapp-v1.0.cab',
compression: :lzx,
compression_level: :maximum
)
# Add application files
cab.add_directory('build/', recursive: true)
cab.add_file('README.txt', 'docs/README.txt')
cab.add_file('LICENSE.txt', 'LICENSE')
cab.compress
puts "Created distribution package: myapp-v1.0.cab"Multi-Disk Distribution
# For CD/DVD distribution
cab = Cabriolet::CAB::Compressor.new(
output: 'DISK1.CAB',
max_volume_size: 650 * 1024 * 1024, # 650 MB per disk
compression: :lzx
)
cab.add_directory('product/')
cab.compress
puts "Created #{cab.volume_count} volumes"
# Outputs: DISK1.CAB, DISK2.CAB, DISK3.CAB...Verification Before Distribution
# Verify archive integrity
cab = Cabriolet::CAB::Parser.new.parse('myapp-v1.0.cab')
cab.files.each do |file|
begin
data = file.data # Trigger decompression
puts "✓ #{file.name} (#{data.bytesize} bytes)"
rescue => e
puts "✗ #{file.name}: #{e.message}"
end
end