wapt-java8/setup.py

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()