Note:
Run as local system user
provide key code between the single quotes at line 9 if available.
import _winreg
import ctypes
import os
import ssl
import subprocess
import urllib2
li = []
keyCode = '' # provide key code between the single quotes if available
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)
def Download(src_path, URL, fp):
request = urllib2.Request(URL, headers={'User-Agent': "Magic Browser"})
try:
gcontext = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
parsed = urllib2.urlopen(request, context=gcontext)
except:
parsed = urllib2.urlopen(request)
if not os.path.exists(src_path):
os.makedirs(src_path)
with open(fp, 'wb') as f:
while True:
chunk = parsed.read(100 * 1000 * 1000)
if chunk:
f.write(chunk)
else:
break
return fp
def collectprograms(rtkey, pK, kA):
try:
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')
li.append([DN.strip(), DV.strip()])
except:
pass
i += 1
except:
break
_winreg.CloseKey(oK)
return li
except:
return li
def programsinstalled():
col = []
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)]
for i in rkList:
col = collectprograms(i[0], i[1], i[2])
return col
def ExecuteCmd(cmd):
with disable_file_system_redirection():
obj = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = obj.communicate()
return out
src_path = os.environ['Temp']
URL = "https://script-downloads.comodo.com/Foxit/FoxitPDFEditor121_enu_Setup_Website.222QLR9ar-D7t68Ci-614.exe"
fp = os.path.join(src_path, 'FoxitPDFEditor121_enu_Setup_Website.222QLR9ar-D7t68Ci-614.exe')
CMD = fp + ' /quiet /norestart /keycode="' + keyCode + '"'
if "[u'Foxit PDF Editor', u'12.1.0.15250']" not in str(programsinstalled()):
Download(src_path, URL, fp)
if os.path.exists(fp):
ExecuteCmd(CMD)
if "[u'Foxit PDF Editor', u'12.1.0.15250']" in str(programsinstalled()):
print 'Latest version of Foxit PDF Editor is installed successfully'
else:
print 'Foxit PDF Editor installation failed'
else:
print 'Foxit PDF Editor Download Failed'
else:
print 'Latest version of Foxit PDF Editor already exist'
if os.path.exists(fp):
os.remove(fp)
Comments