-
Notifications
You must be signed in to change notification settings - Fork 479
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
System.NotSupportedException: 'Specified method is not supported.' On reader.MoveToNextEntry() while decompresing 7z #734
Comments
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? |
(sorry i posted the issue from the wrong account) |
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. |
ok if this is fixed on main then ill close this for now. |
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... It 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)
} |
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 |
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 |
From my testing it looks like the check should be removed #735 |
@GamingCity please try master again, the changes has been merged. |
Seems to be working fine now, thanks. |
Thanks both! |
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.
![image](https://user-images.githubusercontent.com/59067016/224494470-c937843e-d451-426d-8cdb-8059898a0d72.png)
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.
The text was updated successfully, but these errors were encountered: