SevenZipExtractor
November 26, 2023 ยท View on GitHub
C# wrapper for 7z.dll (x86 and x64 included). Due to a compatibility issue with "Source Generated" COM Interop, this fork only works with .NET 8.
This fork has been modified to work with NativeAOT and ILTrimming on .NET 8. This fork also adds other features such as:
- Cancellable extraction
- Progress event
- Latest 7z.dll library (Currently: v23.01)
However, all the credits for the initial works have been done by the original creator: Alexander Selishchev
This fork is unfortunately still unavailable on NuGet but if you prefer one, please refer to the original version here:
Every single star makes maintainer happy! โญ
NuGet
Install-Package SevenZipExtractor
Supported formats:
- 7Zip
- APM
- Arj
- BZip2
- Cab
- Chm
- Compound
- Cpio
- CramFS
- Deb
- Dll
- Dmg
- Exe
- Fat
- Flv
- GZip
- Hfs
- Iso
- Lzh
- Lzma
- Lzma86
- Mach-O
- Mbr
- Mub
- Nsis
- Ntfs
- Ppmd
- Rar
- Rar5
- Rpm
- Split
- SquashFS
- Swf
- Swfc
- Tar
- TE
- Udf
- UEFIc
- UEFIs
- Vhd (?)
- Wim
- Xar
- XZ
- Z
- Zip
Examples
Extract all
CancellationTokenSource tokenSource = new CancellationTokenSource();
using (ArchiveFile archiveFile = new ArchiveFile(@"Archive.ARJ"))
{
archiveFile.Extract("Output", tokenSource.Token); // extract all with cancellable control using token
}
Extract to file or stream
using (ArchiveFile archiveFile = new ArchiveFile(@"Archive.ARJ"))
{
foreach (Entry entry in archiveFile.Entries)
{
Console.WriteLine(entry.FileName);
// extract to file
entry.Extract(entry.FileName);
// extract to stream
MemoryStream memoryStream = new MemoryStream();
entry.Extract(memoryStream);
}
}
Guess archive format from files without extensions
using (ArchiveFile archiveFile = new ArchiveFile(@"c:\random-archive"))
{
archiveFile.Extract("Output");
}
Guess archive format from streams
WebRequest request = WebRequest.Create ("http://www.contoso.com/file.aspx?id=12345");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (ArchiveFile archiveFile = new ArchiveFile(response.GetResponseStream())
{
archiveFile.Extract("Output");
}
Wiki
7z.dll
7z.dll (x86 and x64) will be added to your BIN folder automatically.
License
- Based on code from: http://www.codeproject.com/Articles/27148/C-NET-Interface-for-Zip-Archive-DLLs
- Source code in this repo is licensed under The MIT License
- 7z binaries license http://www.7-zip.org/license.txt
Changelog
1.0.17 / 2022.04.08
- #54 4Gb+ archives fixed! ๐ (Thanks Pyroluk)
1.0.16 / 2021.01.17
- 7z binaries updated to 21.07.0.0
- PR#56 - signature for
SquashFS(Thanks mmoosstt) - PR#53 - look for binaries in
binfolder (Thanks CupSunshine)
1.0.15 / 2020.01.14
- .NETStandard 2.0 support PR#38
1.0.14
- Entry.Extrat - preserveTimestamp is true by default #34
- Dynamic operations can only be performed in homogenous AppDomain" #36