import os import shutil import subprocess import _winreg def log(msg): print msg def run(cmd): log("CMD : " + cmd) try: p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) out, err = p.communicate() if out: print out return p.returncode except Exception as e: print str(e) return 1 def delete_folder(path): if os.path.exists(path): log("Deleting Folder : " + path) try: shutil.rmtree(path, ignore_errors=True) if os.path.exists(path): run('rmdir /S /Q "%s"' % path) except: run('rmdir /S /Q "%s"' % path) def delete_reg(root, key): try: _winreg.DeleteKey(root, key) log("Deleted Registry : " + key) except: pass def key_exists(root, key): try: h = _winreg.OpenKey(root, key) _winreg.CloseKey(h) return True except: return False def exists(): keys = [ (_winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\BigAnt 5"), (_winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\BigAnt5"), (_winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\BigAnt 5"), (_winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\BigAnt5"), ] for root, key in keys: if key_exists(root, key): return True return False def spm_install(dir,args): if dir: os.chdir(dir) argslist=args.split() try: subprocess.check_call(argslist) print "retcode0retcode" except subprocess.CalledProcessError as e: print "retcode"+str(e.returncode)+"retcode" def spm_uninstall(dir,args): if dir: os.chdir(dir) log("========== BIGANT REGISTRY UNINSTALL ==========") delete_reg( _winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\BigAnt 5" ) delete_reg( _winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\BigAnt5" ) delete_reg( _winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\BigAnt 5" ) delete_reg( _winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\BigAnt5" ) delete_reg( _winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\BigAnt5" ) delete_reg( _winreg.HKEY_CURRENT_USER, r"Software\BigAnt5" ) if exists(): log("BigAnt registry key still exists.") print "retcode1retcode" else: log("BigAnt registry entry removed successfully.") print "retcode0retcode" def spm_update(dir,args): spm_uninstall(dir,args) if dir: os.chdir(dir) argslist=args.split() try: subprocess.check_call(argslist) print "retcode0retcode" except subprocess.CalledProcessError as e: print "retcode"+str(e.returncode)+"retcode"