📄 readme.txt
字号:
Added a Retry parameter to the OnSkippingFile Event that can be used to re-attempt to open a file for zipping that is open by another process. This gives the chance to close the file and continue with the zipping process rather than having to start over again.
Added a ENotEnoughRoom exception which will be thrown if there is not enough room to write to the archive, i.e. out of disk space.
The new OnUpdate Event gets fired when updating or freshening an existing archive. It is triggered for each file that already exists in the archive as it is either replaced or kept in the updated archive.
The AddDirEntriesOnRecurse will cause separate directory entries to be included in archives when doing recursive zips through subdirectories.
--Integrity Checking
A new method, CheckArchive, will perform an integrity check on all files in an archive. This is much faster than using FileIsOK on each file if testing all files in an archive with VERY MANY files.
Further improved checking for corrupted zip files when opening zip files.
--Encryption
The following new properties and methods allow lower level work with password encrypted archives:
DecryptHeader Gets the decryption header for a particular compressed file in an archive
GetDecryptHeaderPtr Same as DecryptHeader but easier to use in BCB.
DecryptHeaderByte Method Tests a password against the decryption header found in the DecryptHeader property.
GetDecryptHeaderByteByPtr Same as DecryptHeaderByte but easier to use in BCB.
--Self Extracting Executables
Changes were made to the ZIPSFX32.BIN stub itself:
- Modified to work with zip files containing "extra fields" in their headers.
- Modified to change mouse cursor to an hour glass during processing.
- Check for correct file size is now done automatically
- Now uses the end of central and central headers to find the first local header.
- Added a progress meter
- Better checking for corrupted zip files.
- Added an information window that can optionally be shown when the sfx is initially started up.
- Added an AutoRun option to make the sfx stub run automatially when double clicked with no other interaction from the user.
For the new modified sfx stub, ZIPSFX32.BIN, instead of using kpSFXOpt, you should now use the TSfxConfig component to set the options for the sfx stub.
The new sfx can be found in the sfx\ subdirectory as usual and is called ZIPSFX32.BIN and the original sfx can be found in the same subdirectory except it is now called ORGSFX32.bin. Just rename it if you prefer that one (use KPSFXOPT instead of TSfxConfig with the old stub).
--Miscellaneous
The installation is now easier, atleast for first time installers of the source code. The .DPK files for Delphi and .CPP files for BCB are now included. Now these files simply have to be compiled and that's it. There is a separate option in the installation for installing to the different versions of Delphi and BCB.
Added a property called FlushFilesOnClose which will cause all files opened for write by VCLZip to have their disk buffers flushed to disk when closed.
Added the capability to delete Selected files from an archive using the DeleteEntries Method.
The behavior of the OnInCompleteZip Event has been greatly improved. You can now use this event to ask the user to insert the last disk of a spanned disk set rather than having to handle this situation from outside VCLZip.
The register procedures were changed so that the components now get installed to the "VCLZip" tab on the palette. I found that for all but Delphi 1 I had to actually manually move the components to the "VCLZip" tab. You may find that you have to do this too if you have already installed VCLZip before.
The components now use new bitmaps in place of the old ones on the component palette.
Separated many compiler defines into a new file called KPDEFS.INC.
====================================
Version 2.18:
1) Thanks to the hard work of a fellow registered user, added the capability to remove all dependencies on the Dialogs, Forms, Controls, and FileCtrl units by defining the conditional MAKESMALL, which results in a smaller footprint. This can be quite useful when putting VCLZip into a DLL for instance. In order to make this work, go into your Project | Options and select the Directories/Conditionals tab and enter MAKESMALL in the conditional defines text box. In Delphi you can add this conditinal define to the project options of your application that uses VCLZip and then do a "build all". In BCB you will have to add this to the project options of the package that contains VCLZip and then rebuild the package.
If you define MAKESMALL, the only things you lose are:
a) ZIP file open dialog box that appears when the ZipName is set to "?"
b) Select Directory dialog box that appears when the DestDir is set to "?"
c) Changing the cursor to an hour glass during some operations.
d) No long filename support in Delphi 1
2) Made VCLZip completely BCB4 compatible.
3) Added some exception handling to KPUNZIPP and KPINFLT, mainly to handle unexpected situations when wrong passwords are entered. This fixes the problem with PRP, the password recovery program.
4) For Borland C++ Builder, changed any COMP types to double, getting rid of the compiler warnings for unsupported comp type. This affects the OnStartZipInfo and OnStartUnZipInfo events, so you'll have to change the comp parameter to double in these events if you use them (in both your header files and in the CPP files).
5) Modified OnStartUnZip event so that FName (the filename of the file that is about to be unzipped along with complete path) is now a VAR parameter and can be modified. This allows you to change the path and name of a file that is about to be unzipped. This is especially helpfull in applications like Install Programs.
NOTE: You will need to change your current code to add the VAR to the event definition and implementation if you already use this event in your application. (In BCB, add a & just before the parameter instead of VAR)
6) Moved many type definitions to VCLUNZIP.PAS so that kpZipObj won't have to be included in your USES list.
7) Fixed bug that caused GPF when setting Zip Comment to '' (empty string).
8) Moved strings in VCLZip/VCLUnZip into a string table, making the code size a little smaller as well as making it much easier to localize string information. However you have the option of not using the new string table, for whatever reason, by defining NO_RES in your project options (in the conditional defines text box on the Directories/Conditionals tab).
9) Removed the need for several files. No longer included are kpstrm.res, kpstrm.rc, kpsconst.res, kpsconst.rc, kpstres.pas, and for Delphi 1, kpdrvs.pas. In some cases the need for these files was eliminated and in other cases just rolled into the newly included kpzcnst.rc, kpzcnst.pas, and kpzcnst.res. Definining NO_RES in your project options will elimiate the need for these new files but will make your code size slightly larger and you won't be able to localize your application without changing VCLZip source code.
10) Modified the OnFilePercentDone and OnTotalPercentDone progress events to work better when creating spanned disk sets and blocked zip sets. They no longer report 100% when the compressed file still has to be copied to disk.
11) Added the ReplaceReadOnly property. Setting this to true will allow files with the ReadOnly attribute to be replaced during the unzip process.
12) Added the ifNewer and ifOlder options to the OverwriteMode property. (This had somehow made it into the help file but not into VCLUnZip)
13) Added the SFXToZip method which will convert an SFX file to a regular zip file. The header pointers will be properly adjusted during the conversion.
14) Fixed a problem where the OnGetNextDisk event would always revert to the DefaultGetNextDisk method instead of what you entered into the Object Inspector each time your project was re-opened.
15) Fixed a bug that caused CRC errors when unzipping files from spanned disk sets if they were STORED (no compression) and spanned across disks.
16) Added the OnZipComplete and OnUnZipComplete events. If defined, these will fire at the very end of a zip or unzip operation (after all files have been processed, not after each file). These events will rarely be used since, normally you will be able to do the same thing at the point that the call to Zip or UnZip returns, but these events can be useful when using VCLZip in threads where in certain circumstances the return from the Zip or UnZip methods are not seen.
17) Creation of SFX files has never been easier!!! The addition of the MakeNewSFX method allows you to create Self Extracting Executables without the need to create a zip file first. The files that you specify in the FilesList property will be zipped, using all the normal VCLZip property settings, and the SFX will be created, all in one step! In addition, you can create configurable SFX files using this method, and you can do this especially easy by adding the new unit kpSFXOpt to your application's USES list and using the new 32bit SFX stub that is now distributed with VCLZip. This allows you to easily set things like SFX Dialog caption, default target extraction directory, file to launch after extraction, etc.
18) Fixed a memory leak that only affects applications using VCLZip that are compiled with Delphi 2, and that use wildcard specifications in the FilesList property.
Version 2.17a:
1) Fixed a bug that was keeping VCLZip from reading truncated zip files or sfx files that did not have their headers adjusted.
2) Fixed a bug that was causing a directory to be created on the C drive when doing integrity checking with the FileIsOK property.
3) Added {$V-} to kpZipObj.PAS
4) Moved two AssignTo methods to public instead of private in kpZipObj.PAS
Version 2.17:
1) Added Memory zipping and unzipping capabilities through the UnZipToBuffer and ZipFromBuffer methods. See the documentation for these methods in the Help File for more information.
2) New FileIsOK Property allows you to check for the integrity of individual files within an archive without actually unzipping the file.
3) Fixed a bug that kept checking of volume labels from working on WIN31 when working with spanned disk sets.
4) Removed all references to ChDirectory so that VCLZip will be more thread safe allowing separate instances of VCLZip in separate threads to be performing zip/unzip operations at the same time.
5) A new public property PreserveStubs allows you to make modifications to sfx archives and have the archive remain an SFX rather than revert back to a normal zip file.
6) Added a default OnGetNextDisk event. If one is not defined, then the default event will be called when the situation arises that a new disk is needed when zipping or unzipping a spanned or blocked zip archive.
7) Added more power to the wildcard capabilities. Now you can qualify the * wildcard character, for instance:
*<a-e> would satisfy any number of contiguous characters as long as they are all a thru e.
*<!a-e> would satisfy any number of contiguous characters as long as none of them were a thru e.
This allows you to do things like include files in specific direcories into your ExcludeList. For instance:
VCLZip1.ExcludeList.Add('c:\test\*<!\>.txt')
would exclude the zipping of all .txt files in the test directory but not in any subdirectories.
8) Fixed other minor bugs and made other code enhancements.
Version 2.16:
***Please be aware that if you currently use the OnSkippingFile event in any of your applications, version 2.16 will require a small modification as this event has an added parameter and one of the current parameters is used a little differently when being called by the zip operation. Please see the help file for more information.
1) The OnSkippingFile Event has been changed slightly, adding a parameter for the filename.
2) OnSkippingFile is now called when a file to be zipped is skipped because it is locked by another application. See the Help File for more information.
3) Fixed a bug with the Exclude and NoCompressList where they were ignoring entries with anything before the extention (i.e. 'somefile.*' as opposed to '*.zip') if you were saving directory information.
4) Fixed a bug that caused an error if you added a wildcard with a non-existent directory to the FilesList.
5) A few other minor bug fixes.
Modifications for 2.15 include:
1) PackLevel can now be set to 0 (zero) which means no compression at all (STORED only).
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -