import os import subprocess # dir: string -> directory where installer exist # args: string -> which includes all parameters with space delimiter def spm_install(dir, args): import time os.chdir(dir) argslist = args.split() result=subprocess.call(args) if result in [2]: pass else: raise Exception(result) time.sleep(60) try: task=os.popen("taskkill /IM PhotoProductCore.exe /F ") except: pass print 'retcode' + str(0)+ 'retcode' # dir: string -> directory where installer exist # args: string -> which includes all parameters with space delimiter def spm_uninstall(dir, args): import time global argslist blacklist=['HP Photo Creations'] def ecmd(CMD, OUT=False): import ctypes class disable_file_system_redirection: _disable = ctypes.windll.kernel32.Wow64DisableWow64FsRedirection _revert = ctypes.windll.kernel32.Wow64RevertWow64FsRedirection def __enter__(self): self.old_value = ctypes.c_long() self.success = self._disable(ctypes.byref(self.old_value)) def __exit__(self, type, value, traceback): if self.success: self._revert(self.old_value) from subprocess import PIPE, Popen with disable_file_system_redirection(): OBJ = Popen(CMD, shell = True, stdout = PIPE, stderr = PIPE) out, err = OBJ.communicate() ret=OBJ.returncode return ret def collectprograms(rtkey,pK,kA): import _winreg import os list=[] oK=_winreg.OpenKey(rtkey,pK,0,kA) i=0 while True: try: bkey=_winreg.EnumKey(oK,i) vkey=os.path.join(pK,bkey) oK1=_winreg.OpenKey(rtkey,vkey,0,kA) try: DN,bla=_winreg.QueryValueEx(oK1,'DisplayName') DV,bla=_winreg.QueryValueEx(oK1,'DisplayVersion') inlist=[DN.strip(), DV.strip()] try: IL, bla=_winreg.QueryValueEx(oK1,'InstallLocation') if not IL: IL='none' except: IL='none' if IL: inlist.append(IL.strip()) else: inlist.append(IL) try: US,bla=_winreg.QueryValueEx(oK1,'UninstallString') except: US='none' if US: inlist.append(US.strip()) else: inlist.append(US) try: QS,bla=_winreg.QueryValueEx(oK1,'QuietUninstallString') if QS: inlist.append(QS.strip()) except: pass list.append(inlist) _winreg.CloseKey(oK1) except: pass i+=1 except: break _winreg.CloseKey(oK) return list import os import _winreg uninstallkey='SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall' if 'PROGRAMFILES(X86)' in os.environ.keys(): rklist=[(_winreg.HKEY_LOCAL_MACHINE,uninstallkey,_winreg.KEY_WOW64_32KEY | _winreg.KEY_READ), (_winreg.HKEY_LOCAL_MACHINE,uninstallkey,_winreg.KEY_WOW64_64KEY | _winreg.KEY_READ), (_winreg.HKEY_CURRENT_USER,uninstallkey,_winreg.KEY_WOW64_32KEY | _winreg.KEY_READ), (_winreg.HKEY_CURRENT_USER,uninstallkey,_winreg.KEY_WOW64_64KEY | _winreg.KEY_READ)] else: rklist=[(_winreg.HKEY_LOCAL_MACHINE,uninstallkey,_winreg.KEY_READ), (_winreg.HKEY_CURRENT_USER,uninstallkey,_winreg.KEY_READ)] collected='' uninstalled='' error='' blacklisted='' hasnoss=[] ic=0 uc=0 ec=0 exist=0 for i in rklist: col=collectprograms(i[0], i[1], i[2]) for c in col: if not exist == 0: pass else: if blacklist[0] in c[0]: exist+=1 command=c[3]+" /S" unarglist= command.splitlines(True) unarglist2= ''.join(unarglist) print unarglist2 argslist=unarglist2 try: subprocess.check_call(argslist) time.sleep(60) print blacklist[0] +'older Version is removed' except subprocess.CalledProcessError as e: print blacklist[0] +'older Version does not exist, uninstaller returncode:' + str(e.returncode); # dir: string -> directory where installer exist # args: string -> which includes all parameters with space delimiter def spm_update(dir, args): import time os.chdir(dir) argslist = args.split() result=subprocess.call(args) if result in [2]: pass else: raise Exception(result) time.sleep(60) try: task=os.popen("taskkill /IM PhotoProductCore.exe /F ") except: pass print 'retcode' + str(0)+ 'retcode'