mirror of
https://github.com/adamhathcock/sharpcompress.git
synced 2026-02-09 21:24:08 +00:00
System.NotSupportedException: 'Specified method is not supported.' On reader.MoveToNextEntry() while decompresing 7z #564
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @GamingCity on GitHub (Mar 11, 2023).
Ive been getting this exception when i try to extract a 7zip file, it always start extracting files and get to the same point and throws the exception.
using (var archive = ArchiveFactory.Open("D:\test.7z"))
{
var reader = archive.ExtractAllEntries();
reader.EntryExtractionProgress += Reader_EntryExtractionProgress;
while (reader.MoveToNextEntry()) <--Exception here
{
if (!reader.Entry.IsDirectory)
reader.WriteEntryToDirectory("D:\temp", new ExtractionOptions() { ExtractFullPath = true, Overwrite = true });
}
}
void Reader_EntryExtractionProgress(object? sender, ReaderExtractionEventArgs e)
{
Console.WriteLine($"{e.Item.Key}: {e.ReaderProgress.PercentageRead} % read, {e.ReaderProgress.PercentageReadExact} % extracted");
}
Im using .net 6.0 on a simple console app.

It seems to complain that it cant call reflection from this context, yet i dont understand why it manages to extract half the file before having this problem.
WriteAllToDirectory() also gives this exception.
@Erior commented on GitHub (Mar 11, 2023):
Can be DeltaFilter #726, do you have the test file somewhere or can you build from this repo and test/report the CMethodId id value when it fails?
@Shivansps commented on GitHub (Mar 11, 2023):
(sorry i posted the issue from the wrong account)
Yeah this is the file, its extensionless but it is a 7z.
9cb349c96e@Erior commented on GitHub (Mar 12, 2023):
If you open it in 7z you can see that some entries are using Method Delta:X LZMA, The support for this was added recently and has not yet been released.
@GamingCity commented on GitHub (Mar 13, 2023):
ok if this is fixed on main then ill close this for now.
@GamingCity commented on GitHub (Mar 17, 2023):
OK, using master instead of the nuget package allowed to decompress a lot more files, but im still finding some of them fail to decompress...
Like this one:
0af317e290It seems that there is a Delta:1 and a Delta:2 but i dont think thats the issue as it seems to extract those files or most of those files just fine.
OK this is thwing the exception at deltafilter.cs, _distance is 0
public DeltaFilter(bool isEncoder, Stream baseStream, byte[] info) : base(isEncoder, baseStream, 1)
{
_distance = info[0];
_history = new byte[DISTANCE_MAX];
_position = 0;
}
@Erior commented on GitHub (Mar 19, 2023):
Using the link, it actually fails on a file that 7zip says does not use the delta method, I will see if there are other conditions than the ID for the filter detection
@Erior commented on GitHub (Mar 19, 2023):
and I was wrong, but it looks to be a noop setup, not applying the filter seems to be the right way, I'll look into it some more later
@Erior commented on GitHub (Mar 19, 2023):
From my testing it looks like the check should be removed #735
@Erior commented on GitHub (Mar 21, 2023):
@GamingCity please try master again, the changes has been merged.
@GamingCity commented on GitHub (Mar 22, 2023):
Seems to be working fine now, thanks.
@adamhathcock commented on GitHub (Mar 22, 2023):
Thanks both!