# -*- coding: utf-8 -*- from setuphelpers import * uninstallkey = [] def install(): version = control['version'].split('-',1)[0] major_version = version.split('.',1)[0] minor_version = version.split('.',1)[1] print('Checking old java 8 versions...') old_java8 = installed_softwares('{26A24AE4-039D-4CA4-87B4') for uninstall in old_java8: if Version(uninstall['version'].split('.',1)[0]) == Version(major_version) : if Version(uninstall['version']) < Version(version): killalltasks(['firefox.exe','chrome.exe','iexplore.exe','jushed.exe']) print('Uninstalling previous version %s' % uninstall['version']) cmd = uninstall_cmd(uninstall['key']) run_notfatal(cmd) print ('Installing Oracle JRE version : %s' % version) install_msi_if_needed('jre1.%s.0_%s.msi' % (major_version,minor_version),killbefore=['firefox.exe','chrome.exe','iexplore.exe','jushed.exe']) if iswin64(): install_msi_if_needed('jre1.%s.0_%s64.msi' % (major_version,minor_version),killbefore=['firefox.exe','chrome.exe','iexplore.exe','jushed.exe']) print("Disabling auto updates") if iswin64(): reg_path = r'SOFTWARE\Wow6432Node\JavaSoft\Java Update\Policy' else: reg_path = r'SOFTWARE\JavaSoft\Java Update\Policy' key = reg_openkey_noredir(HKEY_LOCAL_MACHINE, reg_path, sam=KEY_WRITE, create_if_missing=True) reg_setvalue(key,'EnableJavaUpdate', 0, REG_DWORD) def sendmessagebox(msg,title,boxtype=4096): import win32ui titlebox = title.decode('utf-8', 'ignore').encode('cp1252', 'ignore') txt = msg.decode('utf-8', 'ignore').encode('cp1252', 'ignore') resultask = win32ui.MessageBox(txt, titlebox, boxtype) def update_package(): import requests,re from waptpackage import PackageEntry try: import bs4 as BeautifulSoup except: import BeautifulSoup page = requests.get('https://www.java.com/en/download/manual.jsp',headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64)'}).text bs = BeautifulSoup.BeautifulSoup(page) new_minor = re.search('Recommended Version 8 Update (\d+)',page).group(1) pe = PackageEntry() control = pe.load_control_from_wapt(os.getcwd()) current_version = control['version'].split('-',1)[0] if Version('8.' + new_minor) > Version(current_version): print('New version available %s' % new_minor) url32 = bs.find(title = "Download Java software for Windows Offline")["href"] url64 = bs.find(title = "Download Java software for Windows (64-bit)")["href"] print('Downloading Oracle JRE for 32 bit systems') wget(url32,'java32.exe') print('Downloading Oracle JRE for 64 bit systems') wget(url64,'java64.exe') if not iswin64(): error('Update source only on x64 machine') sendmessagebox("Please cancel Oracle JRE installations that will start next",'Attention') allmsi = glob.glob('*.msi') for msi in allmsi : remove_file(msi) if isdir(makepath(user_appdata(),'..','LocalLow','Oracle')): remove_tree(makepath(user_appdata(),'..','LocalLow','Oracle')) allexe = glob.glob('*.exe') for exe in allexe : run(exe) remove_file(exe) current_path = os.path.dirname(os.path.realpath(__file__)) allmsi = glob.glob(makepath(user_appdata(), '..', 'LocalLow', 'Oracle', 'Java', '*', '*.msi')) for msi in allmsi: filecopyto(msi, current_path) pe.version = '8.' + new_minor + '-0' pe.maturity = 'PREPROD' pe.save_control_to_wapt(os.getcwd()) else: print('No update available') if __name__ == '__main__': update_package()