Zip and Unzip Using VB5 or VB6

This code shows how to use the freeware InfoZip Zip32.DLL and Unzip32.DLL files from the

http://www.cdrom.com/pub/infozip/ website. I've included the two dll's in the download file at the end of this article.

The InfoZip DLL's are open-source DLL's that are available for programmers to utilise free of charge. They are standard C DLL's and were very tricky/impossible to interface with VB until VB5/6 offered the 'addressof' operator.

About this Code

I based this code on the Zip/Unzip examples that come with the downloadable DLL's and encapsulated that code into re-usable class modules that can either be used in an ActiveX DLL, or just placed into your project as required. The downloadable project contains the source-code for an ActiveX DLL called CGZipLibrary and a sample project which uses that DLL.

The example program simply takes everything in it's own directory and zip's it into a file.

You can then unzip this file straight into the TEMP directory. You can check the structure of the Zip file using WinZip (or similar) if you want to check that the Zip is intact (I've had no problems with it at all).

The Class Modules CGZipFiles and CGUnzipFiles have a lot of properties - it's worth reading through the code in these classes to learn how to get the best from them.

A sample piece of code using the Zip class could be as simple as :



Dim oZip as CGZipFiles

set oZip = new CGZipFiles

oZip.ZipFileName = "\MyZip.Zip"
oZip.AddFile "c:\mystuff\myfiles\*.*"
oZip.AddFile "c:\mystuff\mymedia\*.wav"

If oZip.MakeZipFile <> 0 then
   MsgBox oZip.GetLastMessage
End If

set oZip = nothing


'

The code for Unzipping files is just as straight-forward :


Dim oUnZip as CGUnZipFiles

set oUnZip = new CGUnZipFiles

oUnZip.ZipFileName = "\MyZip.Zip"
oUnZip.ExtractDir = App.Path ' or whatever you like !
oUnZip.HonourDirectories = true ' keep dir structure
If oUnZip.UnZip <> 0 then 
  MsgBox oUnZip.GetLastMessage
End If

set oUnZip = nothing


'
Note : This code is provided as-is - I know that there are a few bugs in the interface to the Zip/Unzip DLL's (including a frustrating one that's got a real cludge work around - see if you can spot it). It's designed as a starting point to allow you to use Zip and Unzip functionality in your programs. You should really place the Zip32.DLL and Unzip32.DLL into your \windows\system directory (although you can just have them in the same directory as the ActiveX DLL)

I've been a version of this code for several weeks in a production application and it's just been superb.

I hope you enjoy the code!



Downloads

Comments

  • www.easysoftbd.com

    Posted by Md. Abdul Hannan on 11/24/2014 10:28pm

    Zip code works very nice.register the CGZipLibrary.dll Thanks

    Reply
  • Test Engineer

    Posted by Travis Kintz on 07/05/2013 11:44am

    How would I use this to zip a Folder and all folders in it?

    Reply
  • Password

    Posted by thenndral on 01/10/2013 10:07pm

    It works great. How Can I use Password for Zip/Unzip? Please let me know, Is it possible?

    Reply
  • Unzip using vb6

    Posted by Willie on 12/06/2012 09:19am

    hi there all. I am new to vb6, and have succesfully built my first karaoke player. In short, I am trying desperately to add only unzip to my vb6 app.... Basically, i select the zip file from a list, add the full path to a variable. I want to unzip this to my app.path & "\Now" folder... this example seems very straight forwARD, BUT I CANNOT GET IT WORKING ...? Please can someone tell me: a) what dependancies i need to unzip only b) where to store the dependancies (system32 or app path) c) What code to add to unzip a zip file to my folder please...?

    Reply
  • Mr

    Posted by Jack on 10/20/2012 12:12am

    Looks very useful if only I could register the CGZipLibrary.dll.

    Reply
  • Mr

    Posted by Rob Crombie on 07/31/2012 06:38am

    Thanks for sharing. Great solution.

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Today's agile organizations pose operations teams with a tremendous challenge: to deploy new releases to production immediately after development and testing is completed. To ensure that applications are deployed successfully, an automatic and transparent process is required. We refer to this process as Zero Touch Deployment™. This white paper reviews two approaches to Zero Touch Deployment--a script-based solution and a release automation platform. The article discusses how each can solve the key …

  • On-demand Event Event Date: December 18, 2014 The Internet of Things (IoT) incorporates physical devices into business processes using predictive analytics. While it relies heavily on existing Internet technologies, it differs by including physical devices, specialized protocols, physical analytics, and a unique partner network. To capture the real business value of IoT, the industry must move beyond customized projects to general patterns and platforms. Check out this webcast and join industry experts as …

Most Popular Programming Stories

More for Developers

RSS Feeds