Support for LZMS compression in new style WIM/ESD images introduced with the Windows 8.1 ADK

maxpat78
2014-01-08
2014-01-13
  • maxpat78
    maxpat78
    2014-01-08

    Igor, do you plan to support/improve such new compression algorithm and WIM format in 7-zip?

    As you can read in wimlib 1.6.0 documentation (--> https://sourceforge.net/projects/wimlib/ ), latest DISM tool from Microsoft can export images from old WIMs with /compress:recovery and pack them with this new format, which supports: 1) solid blocks; 2) new LZMS compression algorithm (similar to LZMA).

     
  • Igor Pavlov
    Igor Pavlov
    2014-01-09

    OK. I'll check it later. Thanks for that information!

     
  • synchronicity
    synchronicity
    2014-01-13

    Igor, I don't think this feature is high priority for 7-Zip since MS's own software (ImageX, Dism) has problems with the new WIM format, and there is no official documentation. However, just a few notes if you're interested:

    • Dictionary size for LZMS can be up to 67108864 bytes.

    • LZMS uses range coding from the beginning of the block and Huffman coding from the end of the block. For matches it uses a queue of 3 recent offsets, and it also has a weird match type which I don't fully understand yet. It's an interesting format but seemingly isn't as good as LZMA, overall.

    • I haven't had much luck (compatibility-wise) using algorithms other than LZMS in solid blocks, or using multiple solid blocks per WIM archive.

    • LZMS is undocumented (even though it is one of the algorithms supported by the public Compression API available on Windows 8), so if you ever want to support it in 7-Zip it might be best if I wrote up a formal spec and you went from there rather than looking at my code, especially as I did some disassembling to get started in the right direction. Maybe MS will release a spec eventually like they did with XPRESS and LZX though.