104 lines
3.7 KiB
Python
104 lines
3.7 KiB
Python
# -*- 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()
|