About the REALbasic ZIP library

The RBZ library is a suite of classes and modules that provide functionality for creating, browsing and modifying ZIP archives. The eventual aim of this library is to try to provide maximum compatibility with existing ZIP archiving programs and to expose all the features of the ZIP standard in an intuitive way.

Currently the RBZ archive relies on the Monkeybread (MBS) plugin for implementing Deflate compression (the standard compression used in most ZIP archives), however it is also possible to use the RBZ functions without MBS to create and manipulate uncompressed ZIP archives.

Requirements

RBZ uses a lot of the latest functionality of REALbasic, such as structures and enumerations. As a result it requires a minimum of RB2006 r2 to run, and this may increase to a higher version in future releases.

The library supports Mac OS X, Windows and Linux. There are no plans to provide support for Mac OS 9 at this stage.

 

RBZ is a work in progress, and is not feature-complete yet, but it is stable enough to use already for many purposes. Check back regularly for updates.

FAQ

What is this for?
The RBZ library is intended to allow REALbasic developers to implement zip archive creation or browsing/decompression from within their applications.
What's REALbasic, and where can I get hold of it?
REALbasic is a visual programming environment for writing desktop applications for Mac OS, Windows and linux. Unlike RBZ it is not free, however you can download a free time-limited trial version from www.realbasic.com.
What's the point, why not just use WinZip?
There are many applications that would be able to benefit from being able to use ZIP programmatically: A backup program that automatically compressed archives for example, or a Java IDE that could open or create JARs (the JAR file format is basically a ZIP archive with a different file extension). Many games use ZIP as a convenient way to package their resources also.
Didn't Thomas Tempelmann already do this?
Yes, Thomas has developed a similar library which can be found at www.tempel.org/rb There are a number of reasons why we developed this library as an alternative:
  1. TT_ZIP was built to support very old versions of REALbasic, it doesn't make use of new features such as enumerations or structures, which make the code much cleaner and more intuitive to use, or unsigned and 64-bit integers which allow for files greater than 2GB in size.
  2. The interface for the TT_ZIP library is somewhat unintuitive. I wanted to do things in a different way that allows for hierarchical navigation and manipulation of an archive's files.
  3. Choice is good.
What are the terms and conditions of use?
RBZ is distributed under the zlib/pnglib licence, which basically says you are free to use it however you wish which includes using it to write commercial software which you may then sell. However, you are not permitted to distribute on the unmodified source code as your own work, and If it breaks something then I'm not liable.
I found a bug, what should I do?
Use the feedback form on the open source page to report bugs. Or even better, fix the bug yourself and use the file upload feature on the form to send us your fix!
I've got a great idea for a feature, how can I let you know about it?
Use the feedback form on the open source page to suggest features. Or you can add the feature yourself and use the file upload feature on the form to send it to us. If we like it we'll add it to the official download (and mention you in the credits of course).
Where can I find help with using the RBZ library?
If you need help with RBZ, and the included documentation and examples aren't helping, feel free to contact us using our feedback form.

Acknowledgements

The development of the RBZ library was funded by Ed Lazor. He has generously agreed to make it available as open source to benefit the whole RB community. Thanks Ed!

RBZ was written from scratch using the ZIP specification published by PKWare. It is not derived from Thomas Tempelmann's TT_ZIP library, nor does it share any code in common, however I did use Thomas's work as a reference at times, so I would like to thank him for his contributions to the community.