2012-10-28 23 views
6

Bir exe dosyası çıkarmak istiyorum. Exe dosyası bazı dosya ve klasörleri içerir. Ben ayıklanır Winrar kullanarak dosyayı ayıklamak için çalışıyorum ama zaman bazı örnekler kullanarak exe dosyasını ayıklamak için çalışıyorum bu hatayı alıyorum: Biraz örnek kullanılır ve benim sorun için bir sürü googled varGZip başlığındaki sihirli sayı doğru değil. Bir GZip akışında geçirdiğinizden emin olun. (. Exe dosyası)

The magic number in GZip header is not correct. Make sure you are passing in a GZip stream.

ama cevabımı alamadım ve bazı kütüphaneleri de kullandım. .exe dosya kendiliğinden açılan bir arşiv olduğu için var

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); 

       } 
      } 
     } 
    } 
+2

Bunun nedeni .exe dosyasının _is değil_ geçerli bir .gzip dosyası, ancak _contains_ one olmasıdır. Bu bir yürütülebilir dosyadır. Winrar görünüşte, .gzip'i bulabilir (çünkü böyle bir yürütülebilir dosyayı oluşturabilir, düzenini bilir ve okuyabilir). Unutmayın ki her bir .exe dosyası kendi kendine ayıklanan bir arşivdir. –

+0

öyleyse ne yapmalıyım bana bir örnek kod verebilirim lütfen bana yardımcı olabilirsiniz @JanDvorak –

+0

Keşke yapabilseydim. Seni arayabilirim ama garanti veremem. –

cevap

4

...

Sen DotNetZip denemek vermelidir:

Bu kodu aynı hatayı kullandı. Kolayca yapabilirsiniz install it from Nuget

Does this library read self-extracting zip files?

Yes. DotNetZip can read self-extracting archives (SFX) generated by WinZip, and WinZip can read SFX files generated by DotNetZip.

: projenin SSS itibaren.