Using 7-Zip's Compressing/Decompressing Functionality from a .NET Application
Eugene Sichkar, a software developer, has published a project containing a .NET/C# interface to the 7-Zip archiving application on Code Project. 7-Zip is an open source application used to archive/un-archive files in various formats.
7-Zip is an open source archiving application supporting the following formats according to 7-Zip's web site:
- Packing / unpacking: 7z, ZIP, GZIP, BZIP2 and TAR
- Unpacking only: RAR, CAB, ISO, ARJ, LZH, CHM, MSI, WIM, Z, CPIO, RPM, DEB and NSIS
7-Zip currently runs on all desktop versions of Windows starting with Windows 98 to Vista. There is an effort going on to port it to Linux/Unix. 7-Zip is free and licensed under GNU LGPL license, and the UnRAR module is licensed with some restrictions.
Eugene Sichkar, a software developer, has created a C# interface to the 7-Zip DLLs included in the 7-Zip application, allowing anyone to use the 7-Zip compressing/decompressing capabilities from within a .NET application. The following interfaces are implemented according to Eugene:
IProgress- basic progress callback
IArchiveOpenCallback- archive open callback
ICryptoGetTextPassword- callback for prompt password for archive
IArchiveExtractCallback- extract files from archive callback
IArchiveOpenVolumeCallback- open additional archive volumes callback
ISequentialInStream- simple read-only stream interface
ISequentialOutStream- simple write-only stream interface
IInStream- input stream interface with seek capability
IOutStream- output stream interface
IInArchive- main archive interface
Using the .NET interface one accesses the 7-Zip functionality (7z.dll) directly not via a console line, or a console line wrapper. The interface is released under the The Common Development and Distribution License (CDDL). Downloading the C# source code requires registration with Code Project.