procedure Extract7ZipArchive(const ArchiveFileName, DestDir: String; const FullPaths: Boolean; const OnExtractionProgress: TOnExtractionProgress);
Extracts the specified 7-Zip archive to the specified directory, with or without using path names.
An exception will be raised if there was an error.
The archive must not be encrypted.
Set OnExtractionProgress to a function to be informed of progress, or nil otherwise.
TOnExtractionProgress is defined as:
TOnExtractionProgress = function(const ArchiveName, FileName: String; const Progress, ProgressMax: Int64): Boolean;
Return True to allow the extraction to continue, False otherwise.
Extract7ZipArchive uses an embedded version of the "7z ANSI-C Decoder" from the LZMA SDK by Igor Pavlov, as-is, except that Unicode support and error messages were improved and that it outputs memory requirements.
All output of the decoder is logged if logging is enabled, including error messages but excluding empty lines.
The decoder has the following limitations, as written by Igor Pavlov in the LZMA SDK:
To expand on his comments about RAM consumption: When extracting a file, at least enough memory will always be allocated to hold the entire file, regardless of the block size. For example, extracting a 1 GB file using Extract7ZipArchive requires at least 1 GB of RAM. Consider using a different solution for extracting large files, such as embedding 7-Zip itself, which does not use as much RAM, into your installation.
Additionally he wrote:
CreateExtractionPage
CreateDownloadPage
DownloadTemporaryFile
ExtractTemporaryFile