This adds LZX compression support to FCI.
Most of the work for this was done here: https://github.com/elasota/liblzx
The LZX compression code is based on the LZX compression code from wimlib with modifications to support the cabinet variant and streaming compression. Eric Biggers (the author of wimlib) has given permission to redistribute the modified LZX code under LGPLv2 terms: https://wimlib.net/forums/viewtopic.php?t=854
I've been testing this against some large data sets (dumped game assets, Visual Studio installation) with a test program and decompressing with 7-zip and diffs have been coming back OK.
--
v10: cabinet: Fix typo in test
https://gitlab.winehq.org/wine/wine/-/merge_requests/9061
If the read ProgID only has a CurVer key and no CLSID key, it will directly return CO_E_CCLASSSTRING, causing the program to fail to continue running.
Add the key value for finding CurVer.
--
v12: combase:clsid_from_string_reg() add read of CurVer key value.
ole32:Clear GUID on failed registry lookup for non-GUID strings.
ole32/tests:Remove now succeeding todo_wine
https://gitlab.winehq.org/wine/wine/-/merge_requests/7539