Chcę wyodrębnić plik exe. Plik exe zawiera niektóre pliki i foldery. Kiedy próbuję rozpakować plik za pomocą WinRAR to zostanie wyodrębniony, ale gdy próbuję wyodrębnić plik exe stosując kilka przykładów Dostaję taki błąd:Magiczna liczba w nagłówku GZip jest niepoprawna. Upewnij się, że przekazujesz strumień GZip. (Plik exe)
The magic number in GZip header is not correct. Make sure you are passing in a GZip stream.
użyłem kilka próbek i google dużo dla mojego problemu ale nie dostałem odpowiedzi, a także korzystałem z niektórych bibliotek.
Użyłem tego kodu, ale ten sam błąd:
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);
}
}
}
}
To dlatego, że plik .exe _jest niepoprawny .gzip, ale _contains_ jeden. Jest to plik wykonywalny. Winrar najwyraźniej jest w stanie znaleźć .gzip wewnątrz (ponieważ może stworzyć taki plik wykonywalny, zna jego układ i może go odczytać). Należy zauważyć, że zdecydowanie nie każdy plik .exe jest samorozpakowującym się archiwum. –
Więc co powinienem zrobić, daj mi przykładowy kod, byłoby wielkie uznanie, gdybyś mógł mi pomóc @JanDvorak –
Chciałbym móc. Mogę poszukać, ale nie mogę dać żadnej gwarancji. –