The packer used by the Microsoft.Deployment.Compression.Cab.dll
is a managed wrapper around the system file cabinet.dll
which does support the MSZIP algorithm. As the MS-RL is no problem for my project, I downloaded the WIX sources and modified the CAB compression library like this:
public enum CompressionLevel
{
/// <summary>Do not compress files, only store.</summary>
None = 0,
/// <summary>Minimum compression; fastest.</summary>
Min = 1,
/// <summary>A compromize between speed and compression efficiency.</summary>
Normal = 6,
/// <summary>Maximum compression; slowest.</summary>
Max = 10,
/// <summary>Compress files using the MSZIP algorithm.</summary>
MsZip = 11
}
private static NativeMethods.FCI.TCOMP GetCompressionType(CompressionLevel compLevel)
{
if (compLevel == CompressionLevel.MsZip)
{
return NativeMethods.FCI.TCOMP.TYPE_MSZIP;
}
else
{
// existing code goes here
}
}
Compressed with the MSZIP algorithm, WCELOAD does install the generated CAB files without any problems.