Магическое число в заголовке GZip неверно. Убедитесь, что вы передаете поток GZip.(. EXE-файл)

Я хочу извлечь исполняемый файл. EXE-файл содержит некоторые файлы и папки. Когда я пытаюсь извлечь файл с помощью winrar, он извлекается, но когда я пытаюсь извлечь exe-файл, используя несколько примеров, я получаю эту ошибку:

Магическое число в заголовке GZip неверно. Убедитесь, что вы передаете поток GZip.

Я использовал несколько примеров и много гуглил для своей проблемы, но не получил ответ, и я также использовал некоторые библиотеки.

Я использовал этот код, но та же ошибка:

    public static void Decompress(FileInfo fi)
    {
        // Get the stream of the source file.
        using (FileStream inFile = fi.OpenRead())
        {
            // Get original file extension, for example
            // "doc" from report.doc.gz.
            string curFile = fi.FullName;
            string origName = curFile.Remove(curFile.Length -
                    fi.Extension.Length);

            //Create the decompressed file.
            using (FileStream outFile = File.Create(origName))
            {
                using (GZipStream Decompress = new GZipStream(inFile,
                        CompressionMode.Decompress))
                {
                    // Copy the decompression stream 
                    // into the output file.
                    Decompress.CopyTo(outFile);

                    Console.WriteLine("Decompressed: {0}", fi.Name);

                }
            }
        }
    }

1 ответ

Решение

Это потому что .exe файл самораспаковывающийся архив...

Вы должны попробовать DotNetZip. Из FAQ проекта:

Эта библиотека читает самораспаковывающиеся zip-файлы?

Да. DotNetZip может читать самораспаковывающиеся архивы (SFX), сгенерированные WinZip, а WinZip может читать SFX-файлы, сгенерированные DotNetZip.

Вы можете легко установить его из Nuget.

Другие вопросы по тегам