# -*- coding: utf-8 -*-
from setuphelpers import *
import platform
uninstallkey = []
# Defining variables
bin_name_string_x86 = 'OpenJDK8U-jre_x86-32_windows_hotspot_%s.msi'
bin_name_string_x64 = 'OpenJDK8U-jre_x64_windows_hotspot_%s.msi'
silent_inst_args = 'INSTALLLEVEL=3 ADDLOCAL=FeatureOracleJavaSoft'
bin_name_end = '.msi'
bin_name_start_x86 = bin_name_string_x86.split('%s')[0]
bin_name_start_x64 = bin_name_string_x64.split('%s')[0]
def install():
# Initializing variables
package_version = control.version.split('-',1)[0]
for bin_to_install in glob.glob('*.exe') or glob.glob('*.msi'):
if bin_to_install.startswith(bin_name_start_x64):
bin_name_x64 = bin_to_install
else:
bin_name_x86 = bin_to_install
package_version_major = package_version.split('.')[0]
package_version_minor = package_version.split('.')[2]
# Uninstalling olders "AdoptOpenJDK JRE 8" versions
check_installed = installed_softwares(name='AdoptOpenJDK JRE')
for uninstall_app in check_installed:
if 'AdoptOpenJDK' in uninstall_app['publisher']:
if uninstall_app['version'].split('.')[0] == package_version_major:
if uninstall_app['version'].split('.')[2] != package_version_minor:
print('Removing: %s'% uninstall_app['name'])
run(uninstall_cmd(uninstall_app['key']))
# Installing the package
print('Installing: %s' % bin_name_x86)
install_msi_if_needed(bin_name_x86,properties=silent_inst_args)
if iswin64():
print('Installing: %s' % bin_name_x64)
install_msi_if_needed(bin_name_x64,properties=silent_inst_args)
def update_package():
# Initializing variables
proxies = get_proxies()
if not proxies:
proxies = get_proxies_from_wapt_console()
url_dl_x64 = 'https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u275-b01/OpenJDK8U-jdk_x64_windows_hotspot_8u275b01.msi'
url_dl_x86 = 'https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u275-b01/OpenJDK8U-jdk_x86-32_windows_hotspot_8u275b01.msi'
latest_bin_x64 = url_dl_x64.split('/')[-1]
latest_bin_x86 = url_dl_x86.split('/')[-1]
# Downloading latest binaries
if not isfile(latest_bin_x64):
print('Downloading ' + latest_bin_x64)
wget(url_dl_x64,latest_bin_x64,proxies=proxies)
if not isfile(latest_bin_x86):
print('Downloading ' + latest_bin_x86)
wget(url_dl_x86,latest_bin_x86,proxies=proxies)
# Renaming binaries
version = get_version_from_binary(latest_bin_x86)
old_latest_bin_x86 = latest_bin_x86
old_latest_bin_x64 = latest_bin_x64
latest_bin_x86 = bin_name_string_x86 % version
latest_bin_x64 = bin_name_string_x64 % version
os.rename(old_latest_bin_x86,latest_bin_x86)
os.rename(old_latest_bin_x64,latest_bin_x64)
# Changing version of the package
control.version = '%s-%s'%(version,int(control.version.split('-')[-1])+1)
control.save_control_to_wapt()
print('Changing package version to: %s in WAPT\\control' % control.version)
# Deleting outdated binaries
remove_outdated_binaries(version)
def get_proxies():
if platform.python_version_tuple()[0] == '3':
from urllib.request import getproxies
else:
from urllib import getproxies
return getproxies()
def get_proxies_from_wapt_console():
proxies = {}
if platform.system() == 'Windows':
waptconsole_ini_path = makepath(user_local_appdata(), 'waptconsole', 'waptconsole.ini')
else:
waptconsole_ini_path = makepath(user_home_directory(), '.config', 'waptconsole', 'waptconsole.ini')
if isfile(waptconsole_ini_path):
proxy_wapt = inifile_readstring(waptconsole_ini_path, 'global', 'http_proxy')
if proxy_wapt:
proxies = {'http': proxy_wapt, 'https': proxy_wapt}
return proxies
def remove_outdated_binaries(version, list_extensions=['exe','msi','deb','rpm','dmg','pkg'], list_filename_contain=None):
if type(list_extensions) != list:
list_extensions = [list_extensions]
if list_filename_contain:
if type(list_filename_contain) != list:
list_filename_contain = [list_filename_contain]
list_extensions = ['.' + ext for ext in list_extensions if ext[0] != '.']
for file_ext in list_extensions:
for bin_in_dir in glob.glob('*%s' % file_ext):
if not version in bin_in_dir:
remove_file(bin_in_dir)
if list_filename_contain:
for filename_contain in list_filename_contain:
if not filename_contain in bin_in_dir:
remove_file(bin_in_dir)
def get_version_from_binary(filename):
if filename.endswith('.msi'):
return get_msi_properties(filename)['ProductVersion']
else:
return get_file_properties(filename)['ProductVersion']