Я могу извлечь файл MSI, но когда я пытаюсь восстановить его из извлеченных файлов, результирующий файл не работает.
Я предполагаю, что если бы я изменил метод сжатия от Deflate на другой, он бы сработал.
Ответ 1
Прежде всего: в пакете установщика Windows есть скрипт под названием WiMakCab.vbs, который используется для создания файлов *.cab для использования в файлах MSI. Одна из строк в этом скрипте: Dim compressType: compressType = "MSZIP"). Возможно, вам следует попробовать этот скрипт при создании кабин.
Ниже приведена аннотированная цитата с http://www.gdgsoft.com/ (16.06.2014: удалена прямая неработающая ссылка, оставлена базовая ссылка):
" Microsoft Cabinet поддерживает три метода сжатия без потерь: (1) хранение, (2) MSZip и (3) LZX. В файле архива кабинета может использоваться любая комбинация этих методов. MSZip, по сути, такой же, как метод дефляционного сжатия Используется PKZip. LZX - это технология сжатия на основе LZ77, в которой используется статическая кодировка Хаффмана. LZX использует больше памяти, но может обеспечить более высокие коэффициенты сжатия, чем MSZip. Хранится, конечно, означает, что файл хранится в несжатом корпусе ".