TurboPower Abbrevia 3.05 Table of contents 1. Introduction 2. Package names 3. Installation 4. Support 5. Bug Reporting 6. Version history 6.1 3.05 Beta #1 6.2 3.05 Beta #2 6.3 3.05 Beta #3 6.4 3.05 Beta #4 6.5 3.05 Beta #5 6.6 3.05 Beta #6 (Everyone should read this section!) 6.7 3.05 Release Candidate 6.8 3.05 Final ============================================== 1. Introduction Abbrevia is a compression toolkit for Embarcadero Delphi, C++Builder, and Kylix. It supports PKZIP 4, Microsoft CAB, TAR, and gzip formats and the creation of self-extracting archives. It includes visual components that simplify the manipulation of ZIP files. This is a source-only release of TurboPower Abbrevia. It includes design-time and run-time packages for Delphi 6 through 2010 and Kylix 3. C++Builder support is untested in the current version. ============================================== 2. Package names TurboPower Abbrevia package names have the following form: BNNNKKVV.* | | | | | +------ VV VCL version (30=Delphi 3, 40=Delphi 4, 70=Delphi 7, K3=Kylix 3) | +-------- KK Kind of package (R=runtime, D=designtime, CD = CLX designtime, | CR = CLX runtime, VD = VCL designtime, | VR = VCL runtime) | +----------- NNN Product version number (e.g., 305=version 3.05) For example, the Abbrevia designtime package files for Delphi 5 have the filename B305_D50.*. ============================================== 3. Installation To install TurboPower Abbrevia into your IDE, take the following steps: 1. Unzip the release files into a directory (e.g., d:\abbrevia). 2. Start Delphi or C++Builder. 3. Add the source subdirectory (e.g., d:\abbrevia\source) to the IDE's library path. 4. Open & compile the runtime package specific to the IDE being used (e.g. B305vr2007.dpk for Delphi2007) 5. Open & install the designtime package specific to the IDE being used (e.g. B305vd2007.dpk for Delphi2007). The IDE should notify you the components have been installed. 6. Make sure the PATH environmental variable contains the directory in which the compiled packages (i.e., BPL or DPL files) were placed. ============================================== 4. Support Support for Abbrevia can be obtained through the "Help" forum on the SourceForge site at https://sourceforge.net/projects/tpabbrevia/forums/forum/241865 or in the "turbocontrol.abbrevia" newsgroup at news://news.turbocontrol.com. Outlook express can be setup to read these newsgroups if you don't already have a newsgroup reader. Access the support newsgroups with a browser: http://delphi.newswhat.com/geoxml/forumlistthreads?groupname=turbocontrol.abbrevia ============================================== 5. Bug Reporting All bugs and feature requests are handled via the SF.NET trackers. If you have a found a bug please post it here so it does not get lost. http://sourceforge.net/tracker/?group_id=71001 Please post complete steps, with code that duplicates the problem. If the problem only affects specific files please attach them to the bug report, or, if they need to be kept confidential, email them to one of the project administrators. Please note we can not read your mind, unreported bugs will not be fixed. ============================================== 6. Version history Below you will find the history of the 3.05 Beta Releases. The number in brackets is the Bug and Enchancement Tracker IDs from SF.NET. ================ 6.1 3.05 Beta #1 Bug Fixes ---------  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 Enhancements ------------  Create DUnit Framework to test Abbrevia  Add Support Kylix 3 ================ 6.2 3.05 Beta #2 NOTE: Disk Spanning and Splitting does not work at all in this release. Bug Fixes ----------  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 Enhancements ------------ None. ================ 6.3 3.05 Beta #3  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 ================ 6.4 3.05 Beta #4  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 ================ 6.5 3.05 Beta #5  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 ================ 6.6 3.05 Beta #6  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: 1. 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. 2. Memory - File is extracted to memory, and if successful is then written to disk. 3. 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.