home *** CD-ROM | disk | FTP | other *** search
- """Uninstaller for Windows NT 3.5 and Windows 95.
-
- Actions:
-
- 1. Remove our entries from the Registry:
- - Software\Python\PythonCore\<winver>
- - Software\Microsoft\Windows\CurrentVersion\Uninstall\Python<winver>
- (Should we also remove the entry for .py and Python.Script?)
-
- 2. Remove the installation tree -- this is assumed to be the directory
- whose path is both os.path.dirname(sys.argv[0]) and sys.path[0]
-
- """
-
- import sys
- import nt
- import os
- import win32api
- import win32con
-
- def rmkey(parent, key, level=0):
- sep = " "*level
- try:
- handle = win32api.RegOpenKey(parent, key)
- except win32api.error, msg:
- print sep + "No key", `key`
- return
- print sep + "Removing key", key
- while 1:
- try:
- subkey = win32api.RegEnumKey(handle, 0)
- except win32api.error, msg:
- break
- rmkey(handle, subkey, level+1)
- win32api.RegCloseKey(handle)
- win32api.RegDeleteKey(parent, key)
- print sep + "Done with", key
-
- roothandle = win32con.HKEY_LOCAL_MACHINE
- pythonkey = "Software\\Python\\PythonCore\\" + sys.winver
- rmkey(roothandle, pythonkey)
- uninstallkey = \
- "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Python"+sys.winver
- rmkey(roothandle, uninstallkey)
-
- def rmtree(dir, level=0):
- sep = " "*level
- print sep+"rmtree", dir
- for name in os.listdir(dir):
- if level == 0 and \
- os.path.normcase(name) == os.path.normcase("uninstall.bat"):
- continue
- fn = os.path.join(dir, name)
- if os.path.isdir(fn):
- rmtree(fn, level+1)
- else:
- try:
- os.remove(fn)
- except os.error, msg:
- print sep+" can't remove", `fn`, msg
- else:
- print sep+" removed", `fn`
- try:
- os.rmdir(dir)
- except os.error, msg:
- print sep+"can't remove directory", `dir`, msg
- else:
- print sep+"removed directory", `dir`
-
- pwd = os.getcwd()
- scriptdir = os.path.normpath(os.path.join(pwd, os.path.dirname(sys.argv[0])))
- pathdir = os.path.normpath(os.path.join(pwd, sys.path[0]))
- if scriptdir == pathdir:
- rmtree(pathdir)
- else:
- print "inconsistend script directory, not removing any files."
- print "script directory =", `scriptdir`
- print "path directory =", `pathdir`
-