protected void UnZip() throws PrivilegedActionException
  {
    String szZipFilePath;
    String szExtractPath;
    String path = (String)AccessController.doPrivileged(new PrivilegedExceptionAction<Object>() {
        public Object run() throws Exception {
          return Util.getWorkingDirectory() + File.separator;
        }
      });
    int i;

    szZipFilePath = path + "bin" + File.separator + "client.zip";

    File f = new File(szZipFilePath);
    if(!f.exists())
    {
      System.out.println(
	"\nNot found: " + szZipFilePath);
    }

    if(f.isDirectory())
    {
      System.out.println(
	"\nNot file: " + szZipFilePath);
    }

    System.out.println(
      "Enter path to extract files: ");
    szExtractPath = path;

    File f1 = new File(szExtractPath);
    if(!f1.exists())
    {
      System.out.println(
	"\nNot found: " + szExtractPath);
    }

    if(!f1.isDirectory())
    {
      System.out.println(
	"\nNot directory: " + szExtractPath);
    }

    ZipFile zf;
    Vector zipEntries = new Vector();

    try
    {
      zf = new ZipFile(szZipFilePath);
      Enumeration en = zf.entries();

      while(en.hasMoreElements())
      {
        zipEntries.addElement(
	  (ZipEntry)en.nextElement());
      }

      for (i = 0; i < zipEntries.size(); i++)
      {
        ZipEntry ze =
	  (ZipEntry)zipEntries.elementAt(i);

        extractFromZip(szZipFilePath, szExtractPath,
	  ze.getName(), zf, ze);
      }

      zf.close();
      System.out.println("Done!");
    }
    catch(Exception ex)
    {
      System.out.println(ex.toString());
    }
  }