DotNetZip v1.8 improves performance, adds file selection, self-extracting archive improvements

Coordinator
Jun 1, 2009 at 12:01 AM

Version 1.8 of DotNetZip is nearing official release.  I'd like to encourage everyone who depends on DotNetZip to give it a try, and verify that it works for your key use cases. When enough of you verify that it is solid, I'll mark v1.8 as officially released, and it will become the new "latest" release of DotNetZip. Give it a go at http://dotnetzip.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=23152.

I'm excited about v1.8 of DotNetZip, the easiest to use Zip library for the .NET community.  Here are some of the key features and improvements:

  • DotNetZip is now ComVisible, which means it is usable from Javascript, VBScript, PHP, VB6, Microsoft Office, and other COM-friendly environments.
  • File selector support means you can add files to your zip, or extract from your zip, using wildcards.  This was a long-requested feature.
  • The runtime ZIP file includes a RELEASE dll, which means performance is 30-40% better than v1.7.
  • There's now support for opening and editing self-extracting archive (SFX) files.  There's a new execute-on-unpack feature.
  • Better support for streaming in high-volume scenarios means better memory utilization.
  • Now you can set ZLIB Strategy and buffer sizes for maximum flexibility.
  • Better options for handling the file-already-exists condition when extracting from zip files.

The new features have been driven by requests from YOU, the users of DotNetZip.  Thanks for all the direction and suggestions.   Keep it coming!   Thanks to your involvement, this should be the best release of DotNetZip ever.  In addition to the new features, I've added 60% more tests, for many different scenarios.  I've fixed bugs, improved reliability, and greatly improved the documentation.  ( To see the latest online doc, go to http://cheeso.members.winisp.net/DotNetZipHelp )  It all adds up to DotNetZip v1.8 - more of what you want.

ps: remember, DotNetZip is donationware.   If you enjoy DotNetZip, please do consider donating.  It's for a good cause. http://cheeso.members.winisp.net/DotNetZipDonate.aspx

 

Jun 1, 2009 at 5:46 AM

Just to be clear, is it only the runtime download that includes the RELEASE dll? Are all the dlls in the runtime RELEASE dlls?

Coordinator
Jun 1, 2009 at 9:31 AM

Yes - there are two downloads called "runtime" - one is a zip and one is an MSI.  They are the only ones that have the release DLL.  The content in those downloads is identical.  Only the package differs. 

And yes, all DLLs in those Runtime downloads are RELEASE dlls.

What do you think - do I need to package the RELEASE DLLs in the DevKit download also?

Jun 1, 2009 at 3:49 PM

I suspected when I saw the Runtime dlls were smaller.

Yes, I think putting them in the dev kit would be great. It would save a download (more convenient for us users). Just add a folder to make it clear which is the release dll (I do so hate to guess).

So far in my testing, 1.8 is going great.

On a different topic, is there a way to use the zip library and the zlib compressor? I'm under the impression that the zip component will use the less effective compressor than the zlib compress but it looks like if I want to use the zlib compressor I must do a lot more coding and I lose the nice object model of the zip library. I don't really care about being zip compliant as other programs will not read what I am compressing.

 

Coordinator
Jun 1, 2009 at 4:51 PM

John, thanks for the feedback.  I will drop the Release DLLs into the devkit, in a new folder.  that will happen on the next turn of the crank

On the ZLIB compressor - The Ionic Zip library uses the  Ionic ZLIB library for compression, automatically.  When you call Save() on a ZipFile, the library opens a Ionic.Zlib.DeflateStream() on each entry you added.  The library then writes out the compressed bytes for the entry, surrounded and framed by the obligatory metadata for zip files.  This DeflateStream is like the built-in DeflateStream (System.IO.Compression.DeflateStream), but is more effective and does not exhibit anomalous behavior, like grossly inflating the size of previously compressed data.  So you get the good compression for free.  You can set the CompressionLevel used in the ZipFile using the ZipFile.CompressionLevel property. b

Jun 2, 2009 at 2:04 AM

Sounds great. Thanks!