What's So Great About 7Zip?
One of the best things about 7Zip is that it doesn't cost anything. Most people think it does because they know that programs like WinZip can be quite expensive. However, 7Zip is an open source program that allows you to zip and unzip documents at high speeds/compression ratios — and it doesn't cost you anything at all. Developped by Igor Pavlov, the 7Zip file compression software became the most popular file compression utility thanks to it's light-weight design, excellent compression ratios and cross-platform compatibility.
The 7z Archive Format
By default, 7Zip creates 7z format archives with a .7z file extension. Each archive can contain multiple directories and files. As a container format, security or size reduction are achieved using a stacked combination of filters. These can consist of pre-processors, compression algorithms, and encryption filters. The core .7z compression uses a variety of algorithms, the most common of which are bzip2, LZMA2, and LZMA. Developed by Igor Pavlov, LZMA is a relatively new system, making its debut as part of the 7z format. LZMA consists of a large LZ-based sliding dictionary up to 4 GB in size, backed by a range coder. All filenames are stored as Unicode. The official 7z file format specification is distributed with the program's source code.
7Zip supports a number of other compression and non-compression archive formats including: Packing/unpacking of ZIP, gzip, bzip2, tar and, in betas for version 9, xz. Unpacking only: Microsoft cabinet (CAB) files, RAR, MSLZ, SWF, FLV, ARJ, Z, LHA, cpio, smzip, JAR, ISO CD/DVD images (7Zip version 4.42 and up), DMG, HFS, rpm and Debian deb archives. According to the 7-Zip website, since version 4.65 (from 2009-02-03), 7-Zip can unpack the following formats in addition to the formats it fully supports: ARJ, CAB, CHM, cpio, DEB, DMG, HFS, ISO, LZH, LZMA, MSI, NSIS, RAR, RPM, UDF, WIM, XAR and Z.
7Zip supports many features, including:
- Support for the 256-bit AES cipher. Encryption can be enabled for both files and the 7z directory structure.
- Volumes of dynamically variable sizes, allowing use for backups on removable media such as writable CDs and DVDs.
- Usability as a basic orthodox file manager when used in 2-panel mode.
- Multiple CPU / core / threading settings can be configured.
- The ability to attempt to open EXE files as archives, allowing the decompression of data from inside many "SetUp" or "Installer" or "Extract" type programs without having to launch them.
- The ability to unpack archives with corrupted filenames, renaming the files as required.
- The ability to create self-extracting archives although cannot do so for multi-volume archives.
Adding Support for 7z Anchives in an Application
One way is to use the 7z.dll or 7za.dll (available from sf.net for download). The 7za.dll works via COM interfaces. It, however, doesn't use standard COM interfaces for creating objects. You can find a small example in "CPP\7zip\UI\Client7z" folder in the source code. A full example is 7Zip itself, since 7Zip works via this dll also. There are other applications that use 7za.dll such as WinRAR, PowerArchiver and others.