History of Changes in the ZipArchive Library
Applies To: All
- 4.1.0 (2010-10-31)
- 4.0.1 (2009-04-24)
- 4.0.0 (2009-03-24)
- Previous History
4.1.0 (2010-10-31)
New Features
-
Added project files for Visual Studio 2010. These are now default project files for the ZipArchive Library.
-
Added the possibility to controls overwriting of files during extraction in the
CZipArchive::ExtractFile(ZIP_INDEX_TYPE, LPCTSTR) method.
-
Added
CZipAbstractFile::HasFilePath()
method to allow properly using custom file implementations that have no physical paths. That includes using abstract files with the CZipArchive::OpenFrom() method.
-
Added the CZipArchive::GetLastIndexAdded() method.
-
Very long paths support under Windows is now automatic. There is no need to prefix paths with \\?\ when extracting.
Changes
-
Zlib library updated to 1.2.5
-
bzip2 library updated to 1.0.6
-
Leading path separators are removed from filenames stored in archives.
-
When a trailing path separator is added to a file name, this file will be added as a folder.
-
File names with trailing path separators in archive and with size 0 are always treated as folders.
-
Removed the
CZipArchive::SetExhaustiveRead
method. Use the CZipArchive::SetSpecialFlags() method instead.
-
Removed the
CZipArchive::GetExhaustiveRead
method. Use the CZipArchive::GetSpecialFlags() method instead.
-
The
CZipMemFile
class derives now from CFile
in MFC compilation (but not under Visual Studio 6.0 with _ZIP_FILE_IMPLEMENTATION set to ZIP_ZFI_WIN).
Bugs Fixed
-
Fixed attributes conversion from NTFS system to others.
-
When a hidden file was compressed under Windows it received no read permissions when extracted under Mac/Linux. Now it has read permissions for the user.
-
When using
CZipArchive::umExtra
unicode characters were not correctly preserved under some conditions.
-
When renaming a file or a directory, problems could occur when FindFast was enabled.
-
Fixed a problem when removing files in large archives using Visual Studio 6.0 (thanks to Alexandr Novy).
-
Fixed a problem with AES encryption under x64.
-
Fixed an issue when extracting archives having Zip64 EoCD locator written when not needed.
-
Fixed path separators conversion when using Unicode extra headers (thanks to Miroslav Bonchev for reporting it).
-
Fixed an issue when CZipArchive::GetFromArchive() method copied a CRC encrypted file without the data descriptor.
4.0.1 (2009-04-24)
Changes
-
Allowed using precompiled headers by correcting the stdafx.h inclusion order.
-
Projects for Visual Studio 2010/2008/2005/2003 use now a precompiled header.
Bugs Fixed
-
Fixed problem with decompressing spanned archives (thanks to Miroslav Bonchev for reporting it).
-
CZipFile::Seek()
in the STL version didn't seek on files larger than 2GB when Zip64 was disabled.
-
Opening an archive that was not a split archive, was throwing exception when closing an archive even if the
iAfterException
parameter was set to CZipArchive::afAfterException (thanks to Dragan Milic for reporting it).
-
Opening a binary split archive could throw an exception sometimes (thanks to Dragan Milic for the fix).
-
Extracting a binary split archive could throw exception with some archives (thanks to Dragan Milic for reporting it).
-
Fixed run-time check failure under Visual Studio (a cast to a smaller data type has caused a loss of data) - thanks to James Grocholl for the fix.
-
Fixed custom Unicode compilation issues in the Open Source version (thanks to Ralph Valeriote for reporting it).
4.0.0 (2009-03-24)
New Features
-
Unicode support compatible with WinZip (Full Version only). See Unicode Support: Using Non-English Characters in Filenames, Comments and Passwords for more information.
-
Support for Visual Studio 2008 and GCC 4.x.
-
Zip64 is now supported under Windows on all compilers. See Compilation of the ZipArchive Library and Integration with Applications for more information (thanks to Sean Farrow for the suggestion).
-
Removed limit of 2GB during file operations when Zip64 was not enabled.
-
Allowed batch renaming files for a better performance (see Modification of Archives: Replacing, Renaming, Deleting and Changing Data for more information).
-
Custom split archive volumes naming scheme through classes derived from CZipSplitNamesHandler. See Segmented Archives: Splitting and Spanning for more information. It is recommended to use this method instead of modifying of the CZipCallback::m_szExternalFile in a split callback.
-
Support for very long file names (more than 260 characters) under Windows (see Compilation of the ZipArchive Library and Integration with Applications for more information).
-
Classes derived from
CZipAbstractFile
allowed in various methods in the CZipArchive class.
-
Binary mode for split archives. See Segmented Archives: Splitting and Spanning for more information (thanks to Dragan Milic for suggestion).
-
Unicode normalization support under Windows (see Unicode Support: Using Non-English Characters in Filenames, Comments and Passwords for more information).
-
Setting code pages is now possible for the CZipArchive::SetPassword() and CZipArchive::SetGlobalComment() methods.
-
Added a new consistency check CZipArchive::checkVolumeEntries (disabled by default).
-
The following methods and fields were added:
-
CZipArchive::CanModify()
-
CZipArchive::ResetCurrentVolume()
-
CZipArchive::IsZipArchive(LPCTSTR)
-
CZipArchive::IsZipArchive(CZipAbstractFile&, bool)
-
CZipException::m_iSystemError
-
Added a possibility to include or exclude empty directories when using the CZipArchive::AddNewFiles() method. See Compressing Data for more information.
- Faster detecting files that are not zip archives when their size is large.
Changes
- The library uses now Visual Studio 2008 project files by default. Project files for other compilers are available and maintained.
-
The following compiler macros were renamed:
-
ZIP_ARCHIVE_STL renamed to _ZIP_IMPL_STL.
-
ZIP_ARCHIVE_MFC renamed to _ZIP_IMPL_MFC.
-
ZIP_ARCHIVE_WIN renamed to _ZIP_SYSTEM_WIN.
-
ZIP_ARCHIVE_LNX renamed to _ZIP_SYSTEM_LINUX.
-
_ZIP64 renamed to _ZIP_ZIP64.
-
_BZIP2 renamed to _ZIP_BZIP2.
-
ZIP_ARCHIVE_USE_LOCKING renamed to _ZIP_USE_LOCKING.
-
ZIP_ARCHIVE_BZIP2_INTERNAL renamed to _ZIP_BZIP2_INTERNAL.
-
Changed opening modes for the CZipArchive::Open(LPCTSTR) method. The ZIP_AUTODETECT_VOLUME_SIZE compiler macro was removed, because it was no longer necessary.
-
Allowed direct modifications of CZipFileHeader instead of calling methods of the CZipArchive class.
-
CZipArchive::RenameFile()
removed. Use CZipFileHeader::SetFileName() instead.
-
CZipArchive::SetFileHeaderAttr()
removed. Use CZipFileHeader::SetSystemAttr() instead.
-
CZipArchive::SetFileComment()
removed. Use CZipFileHeader::SetComment() instead.
-
CZipArchive::GetFileComment()
removed. Use CZipFileHeader::GetComment() instead.
-
The CZipCompressor::methodStore flag allowed in the CZipArchive::SetCompressionMethod() method.
-
CZipArchive::GetSegmMode()
removed. Use appropriate methods of the CZipStorage class (accessible through the CZipArchive::GetStorage() method).
-
Changed endianess detection. ZIP_ARCHIVE_LITTLE_ENDIAN was removed. Define _ZIP_BIG_ENDIAN to compile for big endinan. See Compilation of the ZipArchive Library and Integration with Applications for more information.
-
CZipArchive::Close() returns the name of the last volume in the archive. It is useful when handling split archives (to open a split archive, it is required to open the last volume).
-
The following methods and fields were renamed:
-
CZipArchive::Flush()
renamed to CZipArchive::Finalize().
-
CZipArchive::SetAutoFlush()
renamed to CZipArchive::SetAutoFinalize().
-
CZipArchive::GetAutoFlush()
renamed to CZipArchive::GetAutoFinalize().
-
CZipActionCallback::cbRename
renamed to CZipActionCallback::cbModify.
-
CZipAbstractFile::Seek(ZIP_FILE_USIZE, bool)
renamed to CZipAbstractFile::SafeSeek(ZIP_FILE_USIZE, bool)
to avoid compilation problems.
-
CZipFileHeader::GetCommentSize()
renamed to
CZipFileHeader::PredictCommentSize().
-
ZipPlatform::CreateDirectory()
renamed to
ZipPlatform::CreateNewDirectory() to avoid compilation problems.
-
Exception CZipException::fileError is now thrown when attributes could not be read from a file (in various places).
-
CZipArchive::PredictMaximumFileSizeInArchive() uses now
CZipFileHeader::m_uComprSize instead of CZipFileHeader::m_uLocalComprSize.
-
ZipCompatibility::zcNtfs value changed to
11
to be consistent with other software (thanks to Ken Daraseng for reporting it).
-
CZipFile::OpenModes
made compatible with CFile
modes.
-
CZipFileHeader::m_uVersionMadeBy contains now only a "made by " version without the compatibility information.
-
When using CZipArchive::SetGlobalComment(), a file inside of archive cannot be opened for compression or extraction.
-
To use custom Unicode support in the ZipArchive Library, you need to define now _ZIP_UNICODE_CUSTOM (see Unicode Support: Using Non-English Characters in Filenames, Comments and Passwords for more information).
-
When using custom Unicode, CZipStringStoreSettings::m_uCommentCodePage is only used to set a file comment page, not global comment code page. Use the CZipArchive::SetGlobalComment() method instead.
- During modifications, the ZipArchive Library now checks, if the archive can be modified.
-
The CZipActionCallback::cbModify does not provide an archive name in the CZipActionCallback::Init() method, because multiple files can be renamed now at once.
-
Removed support for MSDN integration in Visual Studio 6.0.
-
Bzip2 library updated to 1.0.5 version.
Previous History
To see the history of previous versions, please visit Archived History of Changes in the ZipArchive Library