Table of contents
- v3.05 final
- v3.05 release candidate
- v3.05 beta 6
- v3.05 beta 5
- v3.05 beta 4
- v3.05 beta 3
- v3.05 beta 2
- v3.05 beta 1
December 6, 2011
- Added support for Delphi/C++Builder XE2, including the 64-bit Windows and OS X platforms.
- Added support for FreePascal 2.4/2.6 on Windows, OS X, and Linux.
- Added TAbTreeView and TAbListView VCL controls that provide an Explorer/WinZip-like interface, and ComCtrlsDemo Delphi example to demonstrate their usage.
- Added ZIP64 support (reading/writing zip archives larger than 2GB, containing files larger than 2GB, or containing more than 65K files).
- Significantly improved split/spanned zip support.
- Added LZMA buffer-to-buffer compression/decompression (LzmaEncodeBuffer and LzmaDecodeBuffer) and compression/decompression stream descendants (TAbLZMACompressionStream and TAbLZMADecompressionStream). Thanks to Pierre le Riche.
- Added support for tar and gzip archives containing filenames encoded in the system ANSI and OEM codepage and UTF-8. New archives are written using UTF-8.
- Added icon/text to RAD Studio's splash screen and about box. Thanks to Lance Rasmussen.
- Added VCL TAbProgressBar control that can replace TAbMeter.
- Added 64-bit COM dll and support for per-user registration.
- Various changes due to split/spanned zip changes (see below).
- Fixed support for opening paths with a "?" prefix.
- Fixed buffer overflow in AbUtils.pas.
- Fixed freshening/replacing items using absolute paths.
- Fixed CAB files created with Delphi 2009 and later incorrectly including the "has next volume" flag.
- Fixed Delphi 6 support. Thanks to Peter Luijer.
AbFindFilesso it finds system and hidden folders if the SearchAttr parameter includes them .
- Fixed hang when trying to extract files that cross CAB boundaries when the next cab is not available .
- Fixed extracting CAB archives so OnProcessItemFailure isn't called after a successful extraction.
- Fixed LZMA support for streams larger than 2GB.
AbGetDriveFreeSpacebuffer overflow and fixed support for free space larger than 2GB.
- Fixed support for modifying SFX zips with non-native stubs (Linux on Windows and vice versa).
TAbBitBucketStreamso it doesn't fault on writes larger than the buffer size, and supports sizes over 2GB.
- Zip local file headers are now preserved when copying unmodified files to a new archive.
- Local file headers are no longer copies of the central directory headers, since many of the defined extra data fields have different values in the two locations.
- Fixed IZipKit (COM) support for enumerations (for each).
Split/Spanned Zip Changes
- Added support for reading/writing unequally sized spans.
- Split/spanned zips are now written to the final location as they're compressed, rather than writing everything to a virtual memory stream first.
- Fixed writing headers that can't be spanned so they trigger a new span if necessary.
- Converting from an unspanned archive to a spanned one is no longer supported.
OnRequestImage's span numbers are now 1-based instead of 0-based to match
OnArchiveSaveProgressis now called at the same time as
OnArchiveProgress, since there isn't a lengthy copy after a spanned archive is written.
TAbSpanStreamhas been replaced by
March 14, 2011
These are the most significant features, fixes and changes made since v3.05. There are many other bug fixes and low-level improvements, the details of which are available in the Subversion log.
Added support for decompressing PKZip files created with bzip2, Lzma, PPMd and WavPack compression. Abbrevia can now read all of the .zipx compression methods besides JPEG. All libraries are statically linked.
- Bzip2 is based on Edison Mera's Delphi wrapper for the official 1.04 SDK .c files.
- Lzma is based on the official v9.20 SDK .c files (public domain).
- PPMd is based on Dag Ågren's Objective-C conversion of Dmitry Shkarin's original C++ PPMd variant I.1 release (public domain).
- WavPack is based on the official v4.60.1 SDK .c files (see "WavPack License.txt").
- Bzip2 is based on Edison Mera's Delphi wrapper for the official 1.04 SDK .c files.
- Added TAbBzip2Archive that supports .bz2 archives and bzipped tars. TAbZipper, TAbUnzipper and TAbZipKit are updated to support them.
Added full Unicode filename support for zips and cabs.
- When loading, zips now support UTF-8 encoding and the Info-Zip and Xceed Unicode path extra headers. ANSI or OEM encoding is detected based on the VersionMadeBy OS field and by examining the extended characters for letters that only occur in one encoding or the other.
- When saving/renaming filenames use OEM or ANSI encoding if possible (possibly with best-fit character mapping), or fall back to UTF-8 if there are characters that don't map to the current code pages. Any filenames stored in ANSI or OEM which include extended characters are also stored using the Info-Zip Unicode path extra header.
- CAB files now support the UTF-8 filename flag for both reading and writing. UTF-8 is always used when saving files, so filenames containing extended characters may not be compatible with older versions of Abbrevia.
Added support for long filenames in tar archives. Long filenames and symbolic link paths are read and written using the GNU extended headers and the UStar extension. Other extended headers (e.g., POSIX) are no longer lost when modifying a tar. Implemented by Joel Haynie, Scooter Software.
- Added support for storing/extracting empty folders in tar archives, and improved support for them in PKZip archives.
AbDetermineArcTypecan now detect archives with unknown extensions based on their content .
TAbZipBrowse/TAbZipper/TAbUnzipper/TAbZipKitnon-visual controls that can be used to load an archive from a stream instead of a file.
AbResStringunit with string constants. Translations are available in Afrikaans, Dutch, French, German and Russian. Thanks to Henri Hakl, Rudy Velthuis, Hichem Bouksani, Roman Kassebaum and Pavel Koptev.
TAbZipViewnow supports themeing and exposes properties added to TCustomGrid in newer versions of Delphi (Anchors, Bevel*, DrawingStyle, GradientEndColor, GradientStartColor, Touch, OnGesture, OnMouseActivate, OnMouseEnter and OnMouseLeave). The gdsClassic DrawingStyle roughly matches the pre-Delphi 2010 appearance.
TAbZipItemand added more values to
TAbZipHostOSenumeration based on newer AppNote.txt and Info-ZIP additions.
- PKZip files created on Linux systems now store the Unix mode in addition to the DOS attributes.
- Fixed .tar/.gz support so LastModFileDate/LastModFileTime/LastModTimeAsDateTime are all in local time, rather than UTC, and the dates are set correctly when storing and extracting files. 
- Cab extraction errors now pass the Win32 error code to DoProcessItemFailure.
TAbZipViewdrawing when multiple rows are selected.
TAbZipOutlinenot responding to drag & drop resizing at design-time.
OnNeedPasswordnot using correct password on last try .
- Removed support for Delphi 1-5.
AbUnZipTempFileconditional defines introduced in v3.05.
TAbPadLockand implicit (partial) locking while archives are busy. Use an explicit critical section if you access a single archive object from multiple threads.
- Merged .inc files for visual controls into the VCL .pas files (e.g. AbCompnd.inc's code was moved into AbCompnd.pas). CLX versions (AbQCmpnd.pas) now include the VCL .pas file instead. This improves IDE compatibility in general, and ErrorInsight and DFM/XFM support, specifically.
February 8, 2010
- VerifyCab returns atUnknown instead of raising an exception for invalid cabs.
- Fixed memory leak in TAbArchive.Add if the item isn't added.
- [ 2947007 ] Fixed saving password protected zips, broken in 3.05 RC.
- [ 2925578 ] Added AbTempFileStream to Delphi 6 and 7 runtime packages.
- [ 1196468 ] Overflow error in Delphi 2005
- [ 2896382 ] Fixed TAbMakeCab/TAbCabKit, broken in 3.05 RC.
December 30, 2009
- Added support for Delphi 2007, 2009, and 2010.
- Added ExtractToStream support for CAB archives.
- Added support for creating and modifying gzipped tars.
- [ 698172 ] Added support for storing and extracting empty directories in zips.
- Zip and Gzip ExtraField properties are now classes instead of strings.
- Changed behavior to match GNU gzip in places where it differs from RFC 1952.
- Added additional values for gzip header's OS field.
- Added support for sorting grid by path.
- Added support for a custom signature for compound files.
- Compound files now supports path strings wihtout '/'.
- Removed support for Windows 95 and Delphi 1-5.
- [ 2896382 ] CAB saving now occurs in Save instead of the destructor.
- [ 2900175 ] Fixed double free in TAbCabView.
- Fixed file handle leak when trying to open an invalid CAB file.
- Removed unused TAbZipArchive.SaveArchive2 procedure.
- Fixed unReduce support (Pkzip 0.9x).
- Fixed renaming in zips to set the VersionMadeBy field.
- Fixed AbDosFileDateToDateTime returning the wrong seconds value.
- Removed unused trial code.
- [ 1327858 ] Last modified times on Unix are off by 24 hours.
- Fixed Linux version storing temp files in /etc instead of /tmp.
- Fixed file handle leak when opening temp file in Linux.
- [ 1163035 ] Fixed invalid stream errors on Linux.
- [ 1939093 ] Fixed CAB creationg storing files without path information.
- Fixed CAB extraction so it restores DOS attributes and last modified times.
- [ 887889, 976804 ] GZip ignores BaseDirectory or target path when extracting.
- [ 1690507 ] Fixed resource leak in AbUnzPrc.DoExtractStored
March 10, 2004
-  IDE hangs when closing form with TAbVCLMeterLink
-  freshing file it doesn't set the correct Item.DiskFileName
-  Impossible to unzip if basedirectory contains european chars
-  Failed unzipping of password protected files clobbers original
-  Files Extracted to Network Drives may be truncated
In order to fix bugs  and  a new set of defines were added to AbDefine.inc that allow you to control the way Abbrevia extracts files. This is a temporary hack and I will be refactoring the code to make them redundant after 3.05 is released. The defines only affect AbUnZip in AbUnzPrc.pas.
When extracting files, we have three options:
- Clobber - Write in place. This is the original behavior, and the side effect is that bug  will reappear. If you try to overwrite a file by extracting from a password protected zip and aren't able to give the correct password the original file is deleted.
- Memory - File is extracted to memory, and if successful is then written to disk.
- TempFile - File is extract to the temp directory, and if successful is then moved to correct location.
In testing, the memory option is the fastest as long as you don't end up using the page file. Once you start to page, this option is usually (not always) slower than TempFile method. Clobber was not tested for performance, it was the original method and buggy.
The TempFile method is the current default behavior.
February 7, 2004
-  Access violation on free
-  Memory corruption on damaged Zip file
-  Memory Leak in abZipPrc
-  Compiler warning in AbZipTyp
-  problem closing TAbUnzip archive
-  compiler warnings with current CVS code
January 30, 2004
-  Current code in CVS fails to build
-  Current CVS code does not build on D5
-  soFreshen isn't working
-  GZip from stream to stream with TAbGzipArchive renders error
-  copy of File saved to floppy cannot be opened
-  Windows exe signature check
-  GZip ExtractAt() extract to wrong locatation
-  AB305B - QT dependancy in AbGzTyp
January 26, 2004
-  Invalid CRC32 and Size Values for GZip Archive
-  setting Windows file attributes on an open file
-  Wrong file dates in zip archives under Linux
-  Spanned and split files can be created and read correctly.
-  Abbrevia's spanning logic is not in conformance with PkWare spec.
-  Spanned and split files created and read correctly.
-  Error reporting not right
October 1, 2003
NOTE: Disk Spanning and Splitting does not work at all in this release.
-  V3.05 Beta 1. Problem when unzipping.
-  Unable to Call TestTagged on new Archives
-  DiskFileName needs to be set from FileName.
-  ZIP - Potential Memory Leak
-  A/V if ZIP Filename only contains extension.
-  In TAbZipArchive.FixName() lValue is not set from Value.
-  Spanning not working, access violation
-  AV on Disk Span, ignores OnRequestBlankDisk
-  OnArchive[Save]Progress events don't fire for new archives
-  OnProcessItemFailure does not fire for write locked files
August 6, 2003
-  Create DUnit Framework to test Abbrevia
-  Add Support Kylix 3
-  Abbrevia doesn't handle filenames containing non-ASCII characters cleanly
-  Compiler Define out of Place
-  AV if delete AbMeter before deleting AbVCLMeterLink
-  CAB Extract At with new name does not work
-  Wrong file type icons shown
-  AV if invalid filename specified
-  Fails to compile in Kylix 3 Pro
-  AbZipper and AbZipKit EReadError
-  Unzip truncates file on some machines
-  GZIP decompressor not Compliant