Table of Contents
YuZip
Overview
YuZip is a library to manipulate ZIP archives for Delphi (Embarcadero / CodeGear / Borland). All code is statically linked, no DLLs needed.
YuZip's two main units are:
YuZip.pas
, a Delphi port of the popuplar libzip C library with complete ZIP archive manipulation capabilities.
libzip is widely used in many commercial and open source products like Adobe, Chrome, PHP, and even Mercedes cars.
YuZip Features
- Create new ZIP archives –
YuZip.pas
andDIZipWriter.pas
.- Add and compress from files, buffers, or streams.
- Open existing ZIP archives –
YuZip.pas
only.- Extract to file, buffer, or streams.
- Modify from files, buffer, or streams.
- Change compression, encryption, and password.
- ZIP64 format supports files larger than 4 GB.
- Unicode filenames with automatic code page conversion.
- Comments for individual files and entire archive.
- Create self-extracting archives (SFX).
- Progress / cancel events.
Compression Algorithms
- Deflate.
- Bzip2.
- LZMA.
- PPMd – Currently
TDIZipWriter
only. - XZ.
- zStandard.
Encryption Algorithms
- WinZip AES – strong, with 128, 192, and 256 bits key sizes.
- Original PKWARE – weak, no longer recommended.
Product History
YuZip came to live as DIZipWriter in 2002. Its main component was the TDIZipWriter
class to create new ZIP archives, with simple interfaces to add data from files, buffers, streams, and objects. The technical goals of TDIZipWriter
have been to write ZIP archives fast, without temporary files, and use no DLLs. All of them are successfully met up to today.
In 2005, DIZipWriter added AES encryption, making it the only Delphi library to support the same strong encryption method which was introduced by WinZip 9.0 and has since developed into the de facto standard for ZIP encryption.
As more effective compression algorithms entered the ZIP specification, DIZipWriter introduced a pluggable abstract compression class with implementations for bzip2 and LZMA in 2013. XZ and zStandard followed in 2021, PPMd in 2022.
DIZipWriter was designed to export or backup data to ZIP archives and still serves this purpose well. However, users kept asking for features to open existing ZIP archives to extract and modify data, and to add new data. The popuplar libzip C library meets these demands and was also suited to be ported to Delphi. In 2023, the new YuZip.pas
unit was released alongside the original DIZipWriter.pas
unit and the name changed from DIZipWriter to YuZip.
YuZip is now the most extensive ZIP archive handling library for Delphi.
3rd Party Problems Detected During YuLib Development
YuZip development found these problems in libzip, all of which are fixed in the latest version: