Skip Navigation Links
Skip Navigation LinksHome > ZipArchive > How to Use > Article
Archived History of Changes in the ZipArchive Library
Applies To: All

Newest History

To see the newest history of changes, please visit History of Changes in the ZipArchive Library

3.2.0 (2007-12-15)

New Features

  • Seeking possibility in the compressed deflate stream. This allows to start data decompression not necessarily from the beginning of a compressed file (see Creating Seekable Compressed Data for more information). This feature is available in the Full Version only.
    • CZipArchive::SeekInFile() method added.
    • CZipArchive::ExtractFile() methods have an additional parameter used during seek operations.
  • Callbacks possible while using split archives allowing to extract segmented archives with non-standard volume naming scheme. This functionality also allows to create segmented archives with custom volume naming scheme (thanks to Dmitry for suggestion). See Segmented Archives: Splitting and Spanning for more information.
  • The CZipArchive::SetSegmCallback() method has an additional parameter that allows setting callbacks separately for spanned and split archives. It is set by default to set the callback for spanned archives, so that it doesn't break the existing applications.
  • Workaround to use Zip64 in Visual Studio 6.0 MFC. It uses STL implementation of CZipFile in MFC compilation (thanks to Igor Green for suggestion and reporting some other issues).
  • Possibility to adjust individual compressors options.
    See CZipArchive::SetCompressionOptions() and Compressing Data for more information.
  • CZipPathComponent::Combine() added.
  • CZipMemFile::ReInit() added.

Changes

Bugs Fixed

  • Fixed Bzip2 compression problem (thanks to Neville Franks for reporting it).
  • Large files without compression were not stored correctly inside an archive.
  • Possible memory leak eliminated in CZipFileHeader::operator=() .
  • Fixes for proper compilation with Qt to avoid multiple symbols defined (thanks to Magne Sjaastad).
  • When an exception was thrown while opening CZipFile in the STL version, the CZipException::m_szFileName was not initialized with the filename (thanks to Alberto Pierotti).
  • Compilation problems under Cygwin (thanks to Mark Space for reporting it).
  • The bRewind parameter in the
    CZipArchive::ExtractFile(ZIP_INDEX_TYPE, CZipAbstractFile&) method was not working (thanks to Andrew for reporting it).
  • Fixed a mutex copying problem when using the CZipArchive object in multiple threads.
  • Fixed problems with compilation of the library under C++ Builder (thanks to Bobyin for reporting it).

3.1.1 (2007-09-01)

Changes

Bugs Fixed

  • Memory leaks in Zlib library when aborting creation of spanned archives by returning false from a callback method (thanks to Michael Oerder for reporting it).
  • Incorrect values might have been returned by the CZipStorage::VolumeLeft() method.
  • An assertion warning when aborting creation of spanned archives in STL version.

3.1.0 (2007-08-10)

New Features

  • Bip2 compression algorithm support (see Compressing Data for more information). Sample applications update to support this functionality.
  • Possibility to encrypt existing files in an archive (thanks to David Goldman for the suggestion). See Encryption Methods: How to Best Protect Your Data for more information).
  • Possibility to share the central directory between multiple archives when extracting in multiple threads (see Extracting Data and Testing Archives for more information).
  • CZipArchive::GetFromArchive() methods are now sensitive to encryptions settings. This way files can be encrypted while getting them from another archive (see Compressing Data for more information).
  • Support for creation of self-extracting archives in the compatible way with popular archivers, such as WinZip and WinRar (see Self-Extracting Archives for more information).
  • Possibility to convert an existing archive into a self-extracting archive in the compatible way with popular archivers (see Self-Extracting Archives for more information).
  • Possibility to append an archive to an existing data when creating an archive in memory. Specify the CZipArchive::zipCreateAppend mode when opening an archive in memory.
  • The CZipArchive::SetExhaustiveRead() method added. It helps when the number of files is incorrectly written in an archive by external software (thanks to Dragan Milic for reporting it).
  • Possibility to use AES encryption in multiple threads (see Encryption Methods: How to Best Protect Your Data for more information).
  • Possibility to change the modification time of existing files inside an archive in a consistent way (see Modification of Archives: Replacing, Renaming, Deleting and Changing Data for more information).

Changes

Bugs Fixed

  • Problems when opening large files under OS X (thanks to Dragan Milic for help).
  • Some further problems when the original Zlib library was linked with the program that used the ZipArchive Library.
  • Compilation problems under Windows NT when using AES encryption (thanks to Heiko Eckendorf).
  • Problems with CZipString in STL version under some MinGW installations (thanks to Laurent Ribon for the fix).

3.0.2 (2007-05-14)

New Features

Changes

  • CZipActionCallback::m_iStep removed. Use CZipActionCallback::GetStepSize() functionality for more flexible callback call frequency adjustment.
  • The ZipArchive Library now uses the version AE-1 of the WinZip AES encryption instead of AE-2. It is consistent with the behavior of WinZip 11.0 which uses the AE-1 format back again in most cases for an extra integrity check. AE-2 format is used only for files which size is less than 20 bytes to avoid discovery of their contents using CRC value.
  • Data descriptor is not used in WinZip AES encryption in non-segmented archives - it was not necessary and could cause problems when extracting with older versions of WinZip.
  • String store settings are not reset now when opening an archive (see Unicode Support: Using Non-English Characters in Filenames, Comments and Passwords ). This allows setting custom code pages and thus proper decoding of filenames and comments in archives that use non-standard code pages and don't use the ZipArchive Library extra fields for code pages.
  • The ZipArchive now checks, if the deflate compression stream ends properly (the Zlib library returns Z_STREAM_END from inflate() when there is no more bytes to decompress). The ZipArchive Library throws an exception with the CZipException::badZipFile code, if the compression stream is incorrect. This is an extra security check against malformed data.
  • Find Fast sorting speeded up (thanks to Muayyad for reporting it). For more information about Find Fast, see Searching in Archive .
  • The Zlib library compression level constants replaced by the
    CZipCompressor::CompressionLevel values. The replaced constants are:
    Z_DEFAULT_COMPRESSION , Z_NO_COMPRESSION , Z_BEST_SPEED , Z_BEST_COMPRESSION .
  • The CZipArchive::checkDataDescriptor check is now not performed by default. This is consistent with the behavior of popular archivers.
  • CZipArchive::CallbackType enumeration values moved to
    CZipActionCallback::CallbackType .
  • CZipActionCallback::m_uTotalSoFar renamed to
    CZipActionCallback::m_uProcessed
  • CZipActionCallback::m_uTotalToDo renamed to
    CZipActionCallback::m_uTotalToProcess
  • CZipActionCallback::LeftToDo() renamed to
    CZipActionCallback::LeftToProcess()
  • Methods that remove files ( CZipArchive::RemoveFile() ,
    CZipArchive::RemoveFiles(CZipIndexesArray&) and CZipArchive::RemoveFiles(const CZipStringArray&) ) return now a bool value indicating the result of the operation, which is useful in situations where an exception was not thrown and yet files could not be deleted.
  • Some helper classes with common names were put under the ZipArchiveLib namespace to avoid possible conflicts with other software.
  • CZipFileHeader::IsDataDescr() renamed to
    CZipFileHeader::IsDataDescriptor().
  • ZipPlatform::IsDirectory() examines attributes as they are reported by the system, not as they were stored in an archive. Under Linux it means the attributes are not shifted right by 16 before checking. The shifting is performed in CZipFileHeader .

Bugs Fixed

3.0.1 (2007-03-11)

New Features

Changes

Bugs Fixed

  • CZipArchive::FindFile() behaved incorrectly under some circumstances (thanks to Magne Sjaastad for the fix).
  • CZipArchive::GetFromArchive() methods were not working properly when the source archive was segmented.
  • Default filenames were not correctly constructed when an empty filename was provided while creating a new file.
  • Local Zip64 extra field was not updated when compressed size did not exceed normal zip limits. The resulting archive was generally correct, but ZipArchive reported it as bad due to additional checks (thanks to Manfrde Feege for reporting it).
  • ZipArc was not correctly calculating sizes of large files due to problems in MFC.

3.0.0 (2007-02-20)

New Features

  • CZipArchive::GetFromArchive() methods can now get data from multi-segment archives. This way you can modify existing segmented archive by repacking it using these methods (thanks to Dragan Milic for the suggestion).
  • A trial version that allows testing Zip64 and AES support is available from the link at the download page.

Changes

  • ZIP_U16_U64 renamed to ZIP_INDEX_TYPE .
  • ZIP_U16_U32 renamed to ZIP_PART_TYPE .
  • ZIP_U32_U64 renamed to ZIP_SIZE_TYPE .
  • ZIP_32_64 renamed to ZIP_ZLIB_TYPE .
  • Index and volume number types ( ZIP_INDEX_TYPE and ZIP_PART_TYPE ) can be defined as int instead of WORD when Zip64 mode is not enabled. It is only for convenience of those, who don't use Zip64 so that they can have more flexible types in loops. You can enable this behavior by undefining _ZIP_STRICT_U16 definition in _features.h file.
  • CZipException::generic renamed to CZipException::genericError and CZipException::internal renamed to CZipException::internalError to allow compilation with managed C++ applications.

Bugs Fixed

  • Extracting files with paths under OS X (thanks to Cory Mintz for reporting it).
  • Possible misinterpretation of OpenFileType enum while archive processing (thanks to Carsten Fuchs for reporting it).
  • Incorrect decompression of files that contains data descriptors and have dummy deflate compressed blocks at the end of the compression stream (thanks to Michael Evangelista for reporting it).
  • CZipArray::GetUpperBound() in STL version was returning invalid value when the size of the array was 0 due to the fact that the method returns now an unsigned value. This affected searching empty archives (thanks to Peter Kullmann for reporting it).
  • Minor documentation fixes

3.0.0 beta (2006-11-27)

New Features

Changes

  • Indexes of files in an archive are unsigned, use ZIP_FILE_INDEX_UNSPECIFIED instead of -1 and ZIP_FILE_INDEX_NOT_FOUND as a test for the return value from find methods.
  • The numbers of segments in multi-segment archive are now of an unsigned type.
  • The terminology for creation and extraction of multi-part archives is changed (splitting & spanning). A "pkzipSpan" archive is now called a "spanned archive" (segments of an archive are stored on removable devices). A "tdSpan" archive is now called a "split archive" (segments of an archive are stored in the same folder).
  • Minor tweaks for maintaining compatibility with PKZIP & WinZip - see Segmented Archives: Splitting and Spanning for more information. A split archive (formerly tdSpan) uses now a different segment's extension naming format ( z%.2u instead of z%.5d ) - it becomes z%d for segments number greater than 99.
  • CZipStorage::pkzipSpan renamed to CZipStorage::spannedArchive .
  • CZipStorage::tdSpan renamed to CZipStorage::splitArchive .
  • CZipStorage::suggestedTD renamed to CZipStorage::suggestedSplit .
  • CZipCallback and its subclasses use unsigned types instead of signed.
  • In the CZipCallback::Callback() method, the parameter uProgress does not provide additional information about the reason for callback - check CZipSegmCallback::m_iCode instead.
  • The Zlib library modified slightly for the needs of the ZipArchive Library, you should use the version distributed with the ZipArchive Library instead of the standard Zlib library.
  • Makefiles for the Zlib library removed - the Makefile for the ZipArchive library compiles now the Zlib library as well.
  • CZipArchive::WideConversionUseAnsi() and
    CZipArchive::EnableOemConversion() replaced by the
    CZipArchive::SetStringStoreSettings() method.
  • CZipArchive::SingleToWide() and CZipArchive::WideToSingle() removed, if you need their functionality, check the methods in the ZipCompatibility namespace.
  • CZipArchive::GetCRCTable() moved to the CZipCrc32Cryptograph class.
  • CZipArchive::GetSpanMode() renamed to CZipArchive::GetSegmMode() .
  • CZipArchive::SetTreatAsSingleDisk() removed, the detection is automatic.
  • Filenames are converted when accessed for the first time and the CZipArchive::SetConvertAfterOpen() was no longer needed and was removed.
  • CZipArchive::FindMatches() it not const anymore (a filename update is possible during executing this method).
  • CZipArchive::SetExtraField() removed, you can now use
    CZipFileHeader::m_aLocalExtraData and
    CZipFileHeader::m_aCentralExtraData .
  • CZipArchive::GetLocalExtraField() removed (see Providing Custom Data: Extra Fields for the information about reading extra fields).
  • CZipArchive::PredictMaximumFileSizeInArchive() uses now
    CZipFileHeader::m_uLocalComprSize instead of
    CZipFileHeader::m_uUncomprSize for calculations.
  • CZipArchive::CloseFileWithNoUpdate() removed, call the
    CZipArchive::CloseFile() method instead and set the bAfterException parameter to true .
  • CZipArchive::GetIndexes() adds an index to the resulting array, even if it is ZIP_FILE_INDEX_NOT_FOUND ; this way you know which files were not found.
  • In the CZipArchive::PredictFileNameInZip() method, the parameter bExactly was removed.
  • CZipArchive::cbGetFromArchive renamed to CZipArchive::cbGet .
  • CZipWordArray renamed to CZipIndexesArray .
  • CZipAddNewFileInfo::m_iReplaceIndex renamed to
    CZipAddNewFileInfo::m_uReplaceIndex and it cannot have the -2 value anymore.
  • Encryption methods moved from the CZipArchive class to the CZipCrc32Cryptograph class.
  • The meaning for the uProgress parameter changed when using CZipSegmCallback - see Segmented Archives: Splitting and Spanning for more information.
  • CZipException::tooLongFileName renamed to CZipException::tooLongData .
  • CZipFileHeader::SetFileName() returns void instead of bool .
  • CZipFileHeader::GetEffComprSize() replaced by the
    CZipFileHeader::GetDataSize() method.
  • CZipFileHeader::GetLocalSize() made public.
  • CZipFileHeader::GetFileNameSize() renamed to
    CZipFileHeader::PredictFileNameSize() .
  • CZipFileHeader::GetSystemAttr() is not const anymore (a filename update is possible).
  • CZipFileHeader::IsDirectory() is not const anymore (a filename update is possible).
  • CZipCentralDir::CInfo::m_uCentrDirPos renamed to
    CZipCentralDir::CInfo::m_uEndOffset .
  • CZipCentralDir::CInfo::m_uThisDisk renamed to
    CZipCentralDir::CInfo::m_uLastVolume .
  • In ZipPlatform::WideToSingle() , the argument bUseAnsi replaced with uCodePage .
  • In ZipPlatform::SingleToWide() , the argument bUseAnsi replaced with uCodePage .
  • ZipCompatibility::IsBigEndian() removed.
  • Endianess determined by preprocessor definitions (check out the _platform.h file if the value is correct).
  • Endian-aware methods that read and write bytes, moved from the ZipCompatibility namespace and encapsulated in the ZipArchiveLib::CBytesWriter class.
  • ZipCompatibility::FileNameUpdate() replaced by the
    ZipCompatibility::ConvertBufferToString() and
    ZipCompatibility::ConvertStringToBuffer() methods.
  • You can remove ZIP_ARCHIVE_MFC_PROJ and ZIP_ARCHIVE_STL_PROJ preprocessor definitions from your projects.
  • You should define _ZIP_IMPL_MFC in your applications that use the MFC version of the ZipArchive Library.
  • You should define _ZIP_SYSTEM_LINUX in your applications that use the Linux version of the ZipArchive Library.
  • The library uses now Visual Studio 2005 project files by default. Project files for other compilers are available and maintained.

2.4.11 (2006-07-01)

Changes

  • The web site rebuilt, which led to links changes in the documentation.
  • Minor tweaks.

Bugs Fixed

  • Files were opened in the text mode under some gcc versions.

2.4.10 (2006-04-01)

New Features

Changes

  • CZipFileHeader::GetSize() can only return the size of the info in the central directory.
  • The limit of number of archive parts has been changed to 99999 for split archives (the compatibility with other archivers is kept up to 99 parts).
  • CZipArchive::ExtractFile(ZIP_INDEX_TYPE, CZipAbstractFile&) does not perform moving the current position pointer of the memory file to the end, before writing decompressed data to it. The decompressed data is written at the current file position (existing data may be overwritten) (thanks to Jennis Meyer-Spradow for the suggestion).

Bugs Fixed

  • The CZipArchive::GetFromArchive() methods would not work, if a local filename size or an extra field size were different from the corresponding sizes in the central directory.
  • Compilation error under gcc-4.1 (thanks to Miroslav Rajcic and Tuncer Ayaz for the fix).
  • Problems with directory creation under Linux (thanks to Neil Youngman for the fix).
  • Problems with extraction in Zippie (thanks to Neil Youngman for reporting it).
  • Zippie was not restoring the global locale. It was not causing problems with Zippie, but nevertheless it is a good practice (thanks to Cecilia Herrera for reporting it).

2.4.9 (2006-02-01)

New Features

  • CZipArchive::SetTreatAsSingleDisk() added for treating archives that have different volume numbers inside and yet are a single-volume archives.
  • Visual Studio .NET 2005 compatibility.

Changes

  • The library now decompresses correctly the archive, if the filename in the local file header is different from the filename in the central directory - it was considered an error in the archive so far.

Bugs Fixed

  • Renaming files corrupted archive, if a local extra field size was different than the size of the extra filed in the central directory (thanks to Dragan Milic for reporting and the fix).
  • Renaming files corrupted archive, if a local filename size was different than the size of the filename in the central directory.
  • Renaming files was not reflected in the local header, if the new filename size was the same as the old ones (thanks to Dragan Milic for reporting and the fix).

2.4.8 (2005-10-01)

New Features

  • Users contributions:
    • Necessary files for compiling with autotools (thanks to Brian Oxley).
    • MinGW makefiles (thanks to Miroslav Rajcic).
    • Partial Zip64 support for ZipArchive STL version 2.4.5 (thanks to Andre Pham).
  • Tip on compiling the library for dynamic linking (using -fPIC with CFLAGS in makefiles) added to the documentation (thanks to Victor Zverovich).

Changes

  • The library now uses Visual Studio 2003 projects (Visual Studio 6.0 projects are still available for download separately).
  • Removed check for characters with codes greater than 128 in the CZipArchive::SetPassword() method. It restricted the password unnecessarily (thanks to Daniel Yerushalmi for the suggestion).

2.4.7 (2005-08-01)

New Features

  • The support for machines with the big-endian architecture added (thanks to Dragan Milic for help).

Bugs Fixed

  • Incorrect progress values were reported while saving a central directory and deleting files (thanks Patrick Banks for help).

2.4.6 (2005-07-01)

Changes

2.4.5 (2005-06-01)

Changes

Bugs Fixed

  • An exception was thrown when closing an archive and another exception had already been thrown before (thanks to Roman Scherzer for reporting it).

2.4.4 (2005-04-01)

Bugs Fixed

  • Corrected problems with compilation under gcc 3.4.2 (thanks to all the people who reported it).

2.4.3 (2005-03-01)

New Features

  • CZipArchive::WideConversionUseAnsi() added.

Bugs Fixed

  • Crash caused by an invalid date used in CZipFileHeader::SetModificationTime() (thanks to Roman Scherzer for reporting it).
  • Invalid string handling in Unicode (bug introduced when trying to support languages such as Japanese or Korean - thanks to Mark Gladding for reporting it).

2.4.2 (2005-02-01)

New Features

  • Allowed proper handling of Unicode names in some languages such as Japanese or Korean: added CZipArchive::EnableOemConversion (thanks to Michael Frossard for suggestions).
  • Split archives can now be extracted (from a non-removable device) by WinZip or WinRar (thanks to Martin Hoefler for the suggestion).
  • The copy constructor added to the CZipMemFile class (thanks to Sofia Massimo for suggestion).

Changes

  • The Zlib library updated to version 1.2.2; see the Zlib library change log for more information.
  • When creating a segmented archive, the whole central directory is placed on a single volume.
  • The number of archive parts is now limited to 99 for split archives (for the compatibility with other archivers).

Bugs Fixed

  • Wildcard matching was not handled properly (e.g. *.exe was not matched against a.b.exe ).
  • Corrected problems when working on 64 bit platforms (thanks to Miha for noticing it and for most of the fixes).
  • Corrected problems with compilation under gcc 3.3.4 (thanks to Miha for the fix).

2.4.1 (2004-06-01)

Changes

  • Workaround for the case when an exception was thrown in CFile::GetFilePath() by MFC when working on offline files under Windows XP (thanks to Richard Stooke for spotting and solving this).

2.4.0 (2004-03-01)

Changes

  • The Zlib library updated to version 1.2.1; see the Zlib library change log for more information.
  • CZipArchive::CloseFileAfterTestFailed() renamed to
    CZipArchive::CloseFileWithNoUpdate() .

2.3.6 (2003-11-01)

Bugs Fixed

2.3.5 (2003-09-01)

New Features

Changes

  • CZipArchive::ExtractFile(ZIP_INDEX_TYPE, CZipAbstractFile&) positions the memory file pointer at the beginning of the compressed data after compression.
  • CZipArchive::AddNewFile() methods now automatically set the value of the file pointer CZipAddNewFileInfo::m_pFile , to the beginning of the file - by calling the CZipAbstractFile::SeekToBegin() method (thanks to Michael A. Rusakov for pointing this out).
  • Compatibility with STLPort (thanks to Ben Discoe for the changes).

Bugs Fixed

  • Compilation errors on Solaris and Linux box gcc 3.2.2 (thanks to Aditya Dwivedula for the fixes).
  • When creating a segmented archive volume, the .zip extension was not properly appended.
  • In the CZipArchive::AddNewFile() methods, the smartness level was always set to CZipArchive::zipsmSafeSmart regardless of iSmartLevel parameter (thanks to Antonio Maiorano for reporting).
  • Rare problems under Windows with STL version (thanks to Daniel Walton for the fix).

2.3.4 (2003-06-01)

Changes

  • CZipArchive::TestFile() throws now an exception if the CZipArchive::CloseFile() returned -1 ; this way the method works as described in the documentation that an exception is thrown when a file is corrupted (thanks to Silvio Scarpati for pointing this out).
  • It is now possible to add an already opened file to an archive (thanks to Kristjan Bjarnason for the change).

Bugs Fixed

  • Problems with extracting some archives (very rare) (thanks to Ben Jos Walbeehm for the fix).
  • Problems with extracting some archives created under Linux (thanks to Jurgen Marquardt for reporting).
  • Small compilation errors under MSVC++ .NET (thanks to Darren Whobrey for the fixes).
  • Setting password in the Zippie application (thanks to Amnon David for the fix).

2.3.3 (2003-01-01)

New Features

  • CZipArchive::m_bRemoveDriveLetter option added.

Bugs Fixed

  • Not extracting files from the last volume when opening an existing split archive, where the last volume filename has other extension than .zip .
  • Added PKZIP_BUG_WORKAROUND definition to the zlib.h file distributed with the ZipArchive Library as well as to the ZipArchive Library project files (in case the Zlib library is replaced with a new version); it deals with PKZIP bug existing in some archives (thanks to Ben Jos Walbeehm for reporting).

2.3.2 (2002-08-01)

Bugs Fixed

  • Problem with creating segmented archives in the STL version of the library (thanks to Luiz Rafael Culik for reporting).

2.3.1 (2002-05-01)

Bugs Fixed

  • Using the CZipMemFile::CZipMemFile(BYTE*, UINT, long) constructor could cause memory errors (thanks to Laurent Dore).

2.3.0 (2002-04-01)

New Features

  • Visual Studio .NET compatibility.
  • CZipArchive::GetFromArchive() methods added, that allow copying files from another archive without decompressing them.
  • Replacing of files in the archive. It works with CZipArchive::GetFromArchive() and the new CZipArchive::AddNewFile(CZipAddNewFileInfo&) which was introduced due to increasing parameters count.
  • CZipArchive::RenameFile() added, which renames a file in an archive maintaining its physical position inside the archive.
  • Added projects and necessary changes for compiling ZipArchive as a DLL version (courtesy of Jonathan Reis).
  • CZipArchive::WillBeDuplicated() added, which lets you check quickly, if the given filename would duplicate an existing one in the archive.
  • CZipArchive::GetCount() has now an additional parameter and can return the number of files in the archive not counting the directories.
  • CZipArchive::Close() has now an additional parameter ( bUpdateTimeStamp ) and can set the modification time of the zip archive to the modification time of the newest file inside the archive.
  • CZipArchive::GetIndexes() added.
  • The ZipArc application was updated to support renaming, replacing (as well as updating files in an archive) and getting compressed files from another archive.

Changes

  • The Zlib library updated to version 1.1.4 that fixes the security vulnerability in version 1.1.3 as described in http://www.zlib.org/advisory-2002-03-11.txt .
  • If a file inside an archive has the wrong date/time stamp set, then the extracted file is given the current time instead of reporting an error.
  • In the CZipArchive::PredictFileNameInZip() method, parameter bAnsiOem changed to bExactly (apart from the name, the meaning has also been changed).
  • CZipArchive::DeleteFiles(const CZipStringArray&) method.

Bugs Fixed

  • Eliminated possible errors when using CZipArchive::zipsmCheckForEff with segmented archives.
  • Reading some files created with other archivers failed occasionally in CZipFileHeader::ReadLocal() (thanks to Christian von Seydlitz).
  • While a file recompression (smartness level includes CZipArchive::zipsmCheckForEff ), if the AutoFlush feature was enabled, there were redundant bytes added to the archive (thanks to Roman Scherzer).
  • Aborting extraction of a segmented archive caused errors (thanks to Sabina Terenzi).
  • Some GUI fixes in ZipArc.

2.2.0 (2001-10-15)

New Features

  • Deleting multiple files from an archive is now much faster - the files are not deleted separately as it was so far, but the library creates a map of holes and continuous areas and moves the data to remain in file over the holes. It means that the data is copied only once and not for every file to delete.
  • Callback functions has been replaced by callback objects to make the code cleaner and to make possible to pass more information during a callback call (see the CZipArchive::SetCallback() method for more information). The new solution has proven to be about 15% faster than the previous one.
    Please note:
    • This change affects the parameters of the following methods:
      • CZipArchive::AddNewFile()
      • CZipArchive::ExtractFile()
      • CZipArchive::TestFile()
      • CZipArchive::SetSegmCallback()
    • The meaning of parameters passed to callback objects is different from the ones passed to the callback functions.
  • Added the callback notification when deleting files.
  • Added the callback notification when saving the central directory.
  • Added possibility to extract or delete files which filenames match the specified wildcard pattern (see the CZipArchive::FindMatches() method for more information).
  • Iterating over the central directory elements speeded up (as a result, all operations that iterate the central directory were speeded up, especially sorting, multiple adding, extracting, testing).
  • The library no longer throws an exception, if the platform the archive was created under, is not supported, but tries to distinguish files from directories anyway.
  • CZipArchive::Flush() can be called now for a segmented archive in creation (finalizing it then), and still allowing extracting or testing.
  • CZipArchive::CloseNewFile() can be called after an exception was thrown, to allow repairing the archive later.
  • Adding files with one of the CZipArchive::AddNewFile() methods can be safely aborted in a not segmented archive (the added data is removed from the archive).
  • CZipException::GetErrorMessage() added for the MFC compatibility.
  • Added parameter bForce to CZipArchive::SetTempPath() that creates the directory, if it doesn't exists.
  • An archive created by the library under Windows can be now correctly extracted under Linux and vice versa without the need for setting the system compatibility for the files.
  • CZipArchive::SetIgnoreCRC() added to make possible working with Java TM Archives (JAR).
  • CZipArchive::GetFindFastIndex() added.
  • CZipArchive::GetCentralDirInfo() added.
  • CZipArchive::GetCentralDirSize() added.
  • CZipArchive::GetCurrentVolume() added.
  • CZipArchive::IsReadOnly() added.
  • CZipFileHeader::CompressionEfficient() added.
  • CZipFileHeader::GetCompressionRatio() added.
  • const keywords added to methods.
  • TRACE messages are now easier to locate in MSVC++ (double clicking gets you directly to the code now).

Changes

Bugs Fixed

  • CZipStorage::Flush() doesn't call now m_pFile->Flush() (it has proven to slow down the archive creation speed significantly) - it is called in different places instead.
  • CZipArchive::TestFile() sometimes was not detecting an incorrect password.
  • Filenames in archives are now correctly converted after calling CZipArchive::Flush() .
  • Fixed the numerical value of the CZipArchive::zipsmCheckForEffInMem flag; the bug caused the temporary file to be always created in memory.
  • ZipPlatform::GetDeviceFreeSpace() was not working on Windows with other devices than removable (in spite of what is written in MSDN, it is sometimes needed to add a slash when passing a drive name to the GetDiskFreeSpace() method and sometimes not). This bug was detected on Windows 2000.
  • Crash eliminated when a file modification time could not be retrieved (in case of an impossible value e.g. a year is 28980).
  • Unix attributes corrected.
  • CZipArchive::ExtractFile() was passing an incorrect value to the callback method.

2.1.1 (2001-10-01)

New Features

  • Linux version at the beta stage (thanks to Luiz Rafael Culik for help).
  • Smart and efficient compression added to the CZipArchive::AddNewFile method (see CZipArchive::Smartness for more information).
  • Integration of the Visual Studio 6.0 help system with MSDN.
  • Adding a file with the user-specified filename in zip.
  • Adding files from memory and extracting files to memory.
  • CZipArchive::Flush() added - it increases the safety when working with zip archives (thanks to Brad Kremer for the idea).
  • CZipArchive::SetCaseSensitivity() added.
  • CZipArchive::PredictFileNameInZip() added.
  • CZipArchive::PredictExtractedFileName() added.
  • CZipArchive::FindFile() speeded up again, the meaning of the case-sensitivity parameter changed, added possibility to find a filename only without a path.
  • CZipArchive::TrimRootPath() improved.
  • CZipArchive::Close() allows now writing the central directory to an archive even after an exception, which lets you e.g. attempt to reuse the archive later.
  • Error descriptions - see CZipException::GetErrorDescription() .
  • STL sample application added (a command line archiver which works for both Windows and Linux.
  • In the MFC sample application added a switch in options to allow an effective compression.
  • Several minor enhancements.

Changes

  • CZipPathComponent methods renamed : GetFullFileName() -> GetFileName() , GetFileName() -> GetFileTitle() , SetFileName() -> SetFileTitle() .
  • The file __[...].zcfg is created depending on the current configuration when using scripts to copy platform dependent files.

Bugs Fixed

  • When performing a non case-sensitive search with the CZipArchive::FindFile() method (thanks to Kenny Prole).
  • In CZipString (STL) when using a different locale than English and non-English characters.
  • CZipStorage::Flush() calls now m_pFile->Flush() as well (it might have caused zip creation problems sometimes).

1.6.6 (2001-08-01)

New Features

  • The CZipPathComponent class understands now a UNC path, so it is possible to extract files over a network (other operations over a network were already possible).

Changes

  • The sample application updated to reflect previous (version 1.6.5) and current changes.

1.6.5 (2001-07-01)

New Features

  • CZipArchive::SetRootPath() added that allows more flexible path manipulations when using CZipArchive::AddNewFile() or CZipArchive::ExtractFile() and their overrides.
  • Ability to set an archive system compatibility to a value different than the current system ID with the CZipArchive::SetSystemCompatibility() method.

Bugs Fixed

  • If the file had the read-only attribute set, the time stamp of an extracted file was not updated and an exception was thrown, (thanks to Arnon Meydav).
  • Invalid Unix attributes conversion.
  • Directories inside an archive are now recognized properly by Unix archivers if the archive was created for Unix platform.

1.6.4 (2001-06-01)

Bugs Fixed

  • Fixed errors that made impossible using the CZipMemFile class and creation of archives in memory.

1.6.3 (2001-05-01)

Changes

  • The Zlib library sources incorporated into the ZipArchive Library projects (it eliminates most often link errors).

1.6.2 (2001-04-01)

New Features

  • Added a simple protection against compiling MFC or STL version without copying the proper files first.
  • Added several preprocessor directives for Borland compilers.

Bugs Fixed

1.6.1 (2001-03-01)

New Features

  • STL version of the library.
  • Porting to different platforms made easier.
  • Possibility to read zip files created on other platforms than Windows (correct interpretation of file and directory attributes).
  • Doxygen generated documentation.

Changes

  • LICENSING CHANGED.
  • Overall tuning.
  • Sample application updated.

1.5.1 (2001-02-01)

New Features

  • Ability to reuse an archive after an exception was thrown during extraction.
  • Added progress notifications to CZipArchive::AddNewFile() , CZipArchive::ExtractFile() , CZipArchive::TestFile() .
  • When the central directory cannot be located, the library throws CZipException::cdirNotFound , which allows distinguishing from other exceptions.

Changes

  • Improved performance of the CZipArchive::FindFile() method (thanks to Darin Warling).
  • The library name changed to ZipArchive.
  • The sample application updated.

Bugs Fixed

  • Incorrect extracting of an encrypted file of 0 size.
  • Incorrect extracting a file with an extra field in a local file header.

1.4.1 (2001-01-01)

New Features

  • Adding and extracting without a full path in CZipArchive::AddNewFile and CZipArchive::ExtractFile .

Changes

  • Disk naming in a spanned archive begins now with PKBACK# 001 not PKBACK# 000.
  • Several minor changes.

1.3.1 (2000-11-01)

New Features

  • Testing of archives made easier.
  • Added support for password encryption and decryption.
  • Support for compiling the sources for Unicode.

1.2.2 (2000-08-01)

Bugs Fixed

  • Several minor bugs fixed.

1.2.1 (2000-06-01)

New Features

  • The code has been completely rewritten from the very beginning.
  • Support for archive segmentation.
  • Creation of segmented archives with the user-defined volume size.
  • Ability to modify existing archives (add, delete files).
  • Modification of self-extracting archives.
  • Write buffer used for faster disk write operations.
  • One class for zip and unzip functions.
  • Fast adding, deleting and extracting files with a single method call.

1.1.3 (2000-03-01)

Bugs Fixed

  • International characters in filenames inside archive are now converted in a compatible way with other archiving programs (they are stored converted to an OEM code page inside an archive).

1.1.1 (2000-01-01)

New Features

  • The first version. It is just a modified code from zip.c and unzip.c files written by Gilles Vollant and distributed with the Zlib library.
  • Added class' wrappers.
  • MFC support added.
  • Memory leaks eliminated when write error occurred.
  • Automatic freeing of the used memory on destruction or exception.
  • Error notification using exceptions instead of return codes.
  • Some enhancements added.

Bugs Fixed

  • Several minor bugs fixed.
Article ID: oldhistory
Back To Top Up