Version 5.0
December 6, 2011
Home Page
- Introduction
- Packages
- Installation
- Support and feedback
- Development sources
- Getting involved
- License
- Changes from 4.0
Abbrevia is a compression toolkit for Embarcadero Delphi, C++ Builder, and Kylix and FreePascal. It supports PKZip, Microsoft CAB, tar, gzip, bzip2 and zlib compression formats, and the creation of self-extracting executables. It includes several visual components that simplify displaying zip files.
Abbrevia 5.0 adds a number of new features and support for more platforms:
- RAD Studio XE2 support, including both 64-bit Windows and OS X
- FreePascal support on Windows, OS X, and Linux
- TAbTreeView and TAbListView VCL controls that provide an Explorer/ WinZip-like interface
- ZIP64 support, for archives larger than 2GB
- Improved split/spanned zip support
- Expanded LZMA support
- Unicode filenames in tar and gzip archives
This is a source-only release. It includes design-time and run-time packages for Delphi 6 through Delphi XE2, C++Builder 2009 through XE2, and Kylix 3. FreePascal is supported, but runtime/design time packages are not included. The LZMA, PPMd, and WavPack algorithms are only supported on Delphi/ C++Builder for Windows (32 and 64-bit).
Abbrevia includes the following packages:
- Abbrevia.bpl: Runtime non-visual components.
TAbZipBrowse
,TAbZipKit
,TAbMakeCab
, etc. - AbbreviaVCL.bpl: Runtime visual components.
TAbTreeView
,TAbListView
,TAbProgressMeter
. - AbbreviaVCLDesign.bpl: Designtime support.
- AbbreviaCLX.bpl, AbbreviaCLXDesign.bpl (Delphi 6/7): CLX visual components.
$LIBSUFFIX
is used, so each .bpl/.bpi will have a version number after it
corresponding to the compiler version (e.g. 160 for Delphi XE2).
The Kylix 3 AbbreviaCLX
package includes all of the non-visual runtime
units, and the Abbrevia
package is not included separately.
To install TurboPower Abbrevia into your IDE:
- Unzip the release files into a directory (e.g., d:\abbrevia).
- Start Delphi or C++Builder.
- Add the source subdirectory (e.g. d:\abbrevia\source) to the Delphi Library path. When using XE2 or later, add it to all platforms.
- If using C++Builder, add the source subdirectory to C++Builder's Include and Library paths.
- Open the project group in the packages directory that corresponds to the IDE being used (e.g. "Delphi XE2.groupproj").
- Start at the top of the project group and compile each package in turn. If using C++Builder, install each one after compiling.
- Select the "AbbreviaVCLDesign" package and install it. The IDE should notify you that the components have been installed. If you are using Delphi 7 you can install "AbbreviaCLXDesign" as well to get CLX designtime support.
- Make sure the PATH environmental variable contains the directory in which the compiled packages (i.e. BPL or DPL files) were placed.
Support forums are available on the SourceForge project site.
Bug reports can be entered in the bug tracker. If possible please include a small test case that reproduces the issue. Sample files can be attached to the bug report, and confidential data can be emailed to the project administrator.
If you have something you would like to see in the product feel free to add feature requests.
The current source code is available in the Subversion repository. The code here may not be as stable or tested as the official releases, but may include bug fixes or new features not yet included in the downloadable releases.
The repository also includes DUnit tests, the source code to the third-party libraries, and the Help source code.
If you want to help make Abbrevia better, there are several ways to get involved. We welcome help with features and bug fixes. Just look in the issue tracker to see what's needed. We're also looking for help for:
- C++Builder maintainer
- FreePascal maintainer
- Webmaster
- Documentation
- Examples
Abbrevia is licensed under the Mozilla Public License, version 1.1. It can be used in commercial and closed-source applications provided any changes to Abbrevia units are made available electronically.
The WavPack library used for zipx decompression has its own license, included as "WavPack License.txt". Redistribution requires a copyright notice in your documentation or elsewhere in your distribution. WavPack support can be removed by disabling the UnzipZipxSupport or UnzipWavPackSupport conditional define in AbDefine.inc.
These are the most significant features, fixes and changes made since v4.0. Information on earlier versions is available in the full changelog.
- 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.
- Renamed
LzEncode/LzDecode
toLzmaEncodeStream/LzmaDecodeStream
. - Renamed
LzmaDecode
toLzmaDecodeStream
. - 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.
- Fixed
AbFindFiles
so it finds system and hidden folders if the SearchAttr parameter includes them [3372355]. - Fixed hang when trying to extract files that cross CAB boundaries when the next cab is not available [3370538].
- Fixed extracting CAB archives so OnProcessItemFailure isn't called after a successful extraction.
- Fixed LZMA support for streams larger than 2GB.
- Fixed
AbGetDriveFreeSpace
buffer 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).
- Fixed
TAbBitBucketStream
so 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).
-
- 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 matchOnRequestNthDisk
.OnArchiveSaveProgress
is now called at the same time asOnArchiveProgress
, since there isn't a lengthy copy after a spanned archive is written.TAbSpanStream
has been replaced byTAbSpanReadStream
andTAbSpanWriteStream
.