Microsoft.Deployment.Compression.Cab.dll 使用的打包程序是系统文件 cabinet.dll 的托管包装程序,它支持MSZIP算法 . 由于MS-RL对我的项目没有问题,我下载了WIX sources并修改了CAB压缩库,如下所示:
CompressionLevel.cs
public enum CompressionLevel
{
/// Do not compress files, only store.
None = 0,
/// Minimum compression; fastest.
Min = 1,
/// A compromize between speed and compression efficiency.
Normal = 6,
/// Maximum compression; slowest.
Max = 10,
/// Compress files using the MSZIP algorithm.
MsZip = 11
}
CabPacker.cs
private static NativeMethods.FCI.TCOMP GetCompressionType(CompressionLevel compLevel)
{
if (compLevel == CompressionLevel.MsZip)
{
return NativeMethods.FCI.TCOMP.TYPE_MSZIP;
}
else
{
// existing code goes here
}
}
使用MSZIP算法压缩,WCELOAD会毫无问题地安装生成的CAB文件 .