home *** CD-ROM | disk | FTP | other *** search
- # Copyright (C) 2004 JanRain, Inc.
- # All rights reserved
-
- import zipfile
- import os
- import errno
-
- from os.path import join, dirname, isdir, normpath, abspath
-
- created_dirs = []
- def makeDir(name):
- global created_dirs
-
- try:
- os.makedirs(name)
- except OSError, e:
- if e.errno == errno.EEXIST:
- assert isdir(name)
- else:
- raise
-
- created_dirs.append(name)
-
- def extract(archive, target_path):
- for filename in archive.namelist():
- treat_as_dir = filename.endswith('/')
-
- target_name = abspath(join(target_path, normpath(filename)))
- if treat_as_dir:
- makeDir(target_name)
- else:
- makeDir(dirname(target_name))
-
- data = archive.read(filename)
- out = file(target_name, 'wb')
- out.write(data)
- out.close()
-
- if __name__ == '__main__':
- import sys
-
- try:
- unused_script, installer_file_name, target_path = sys.argv
- except ValueError:
- sys.stderr.write('%s <installer> <target directory>\n')
- sys.exit(1)
-
- target_path = abspath(target_path)
- archive = zipfile.ZipFile(installer_file_name, 'r')
- archive.testzip()
- extract(archive, target_path)
-