# -*- coding: utf-8 -*- from setuphelpers import * from jinja2 import Environment, FileSystemLoader uninstallkey = [] variables = { 'web_home_page': 'https://google.fr' } def install(): # Read local variables file if available if isfile(makepath(programfiles32,'wapt','private','symetric.txt')) and isfile(makepath(programfiles32,'wapt','private','variables.txt')): print('Reading local encrypted variables file') from cryptography.fernet import Fernet import yaml f = Fernet(open(makepath(programfiles32,'wapt','private','symetric.txt'),'r').read()) variables.update(yaml.safe_load(f.decrypt(open(makepath(programfiles32,'wapt','private','variables.txt'),'r').read()))) # Declaring specific app values chrome_app_path=makepath(programfiles32,'Google','Chrome','Application') chrome_bin_path=makepath(chrome_app_path,'chrome.exe') bin_name = 'googlechromestandaloneenterprise64.msi' if iswin64() else 'googlechromestandaloneenterprise.msi' print('Installing %s' % control.asrequirement()) # Specific app values package_version = control['version'].split('-',1)[0] skip = False # Getting the used storage on programfiles before installation (place it on the top) get_disk_free_space_before = get_disk_free_space(programfiles) if isfile(chrome_bin_path): if Version(get_file_properties(chrome_bin_path)['ProductVersion']) >= Version(package_version): print('File %s version is : %s ' % (chrome_bin_path,get_file_properties(chrome_bin_path)['ProductVersion'])) print('Package version is : %s ' % package_version) uninstallkey_from_file = get_msi_properties(bin_name)['ProductCode'] if uninstall_key_exists(uninstallkey_from_file): uninstallkey.append(uninstallkey_from_file) skip = True if (not skip) or (force == True) : def get_version_chrome(key): if isfile(makepath(programfiles,'Google','Chrome','Application','chrome.exe')): return get_file_properties(makepath(programfiles,'Google','Chrome','Application','chrome.exe'))['ProductVersion'] return get_file_properties(chrome_bin_path)['ProductVersion'] install_msi_if_needed(bin_name ,min_version=package_version ,get_version=get_version_chrome) # Update var after install, as CHrome can be installed either in programfiles or programfiles32 if isfile(makepath(programfiles,'Google','Chrome','Application','chrome.exe')): chrome_app_path=makepath(programfiles,'Google','Chrome','Application') chrome_bin_path=makepath(chrome_app_path,'chrome.exe') # Disabling Google Chrome auto updates for task in ['GoogleUpdateTaskMachineCore', 'GoogleUpdateTaskMachineUA']: if task_exists(task): disable_task(task) registry_setstring(HKEY_LOCAL_MACHINE,'SOFTWARE\\Policies\\Google\\Update','UpdateDefault',0,type=REG_DWORD) registry_setstring(HKEY_LOCAL_MACHINE,'SOFTWARE\\Policies\\Google\\Update','DisableAutoUpdateChecksCheckboxValue',1,type=REG_DWORD) registry_setstring(HKEY_LOCAL_MACHINE,'SOFTWARE\\Policies\\Google\\Update','AutoUpdateCheckPeriodMinutes',0,type=REG_DWORD) if iswin64(): registry_setstring(HKEY_LOCAL_MACHINE,'SOFTWARE\\Wow6432Node\\Google\\Update','UpdateDefault',0,type=REG_DWORD) registry_setstring(HKEY_LOCAL_MACHINE,'SOFTWARE\\Wow6432Node\\Google\\Update','DisableAutoUpdateChecksCheckboxValue',1,type=REG_DWORD) registry_setstring(HKEY_LOCAL_MACHINE,'SOFTWARE\\Wow6432Node\\Google\\Update','AutoUpdateCheckPeriodMinutes',0,type=REG_DWORD) # Disabling Google Chrome telemtry registry_setstring(HKEY_LOCAL_MACHINE,'SOFTWARE\\Policies\\Explorer\\DisallowRun','chrome_telemetry','Software_Reporter_Tool.exe',type=REG_SZ) # Adding master preferences file jinja2 = Environment( loader=FileSystemLoader(os.getcwd()), trim_blocks=True ) open(makepath(chrome_app_path,'master_preferences'),'w').write( jinja2.get_template('master_preferences.j2').render( web_home_page = variables['web_home_page'] ) ) # Return used storage of the program. (place it on the bottom) get_disk_free_space_after = get_disk_free_space(programfiles) free_space_after_diff = get_disk_free_space_before - get_disk_free_space_after print("Storage used: " + str(free_space_after_diff)) def uninstall(): print('uninstalling %s' % control.asrequirement()) for chrome in installed_softwares('Google Chrome'): print('Uninstalling %s' % chrome['version']) run(uninstall_cmd(chrome['key'])) def session_setup(): print('Session setup for %s' % control.asrequirement()) print('Disabling Telemetry') swreporter_path=makepath(user_local_appdata,'Google','Chrome','User Data','SwReporter') if isdir(swreporter_path): remove_tree(swreporter_path) def update_package(): print('Update package content from upstream binary sources') from waptpackage import PackageEntry import requests import json # Get latest version number from official website latest_version = json.loads(wgets('http://omahaproxy.appspot.com/all.json?os=win64&channel=stable'))[0]['versions'][0]['version'] pe = PackageEntry() control = pe.load_control_from_wapt(os.getcwd()) current_version = control['version'].split('-',1)[0] base_url = 'https://dl.google.com/tag/s/dl/chrome/install/' if Version(latest_version) > Version(current_version): print('Latest ' + control.name + ' version is: ' + latest_version) for file in ['googlechromestandaloneenterprise64.msi', 'googlechromestandaloneenterprise.msi']: url_dl = base_url + file # Downloading latest binaries if isfile(file): remove_file(file) print('Downloading ' + file + ' from ' + url_dl) wget(url_dl, file) pe.version = latest_version + '-0' pe.maturity = 'PREPROD' pe.save_control_to_wapt(os.getcwd()) print('Package updated to %s' % latest_version) else: print('This package is already up-to-date') for file in ['googlechromestandaloneenterprise64.msi', 'googlechromestandaloneenterprise.msi']: if not isfile(file): url_dl = base_url + file print('%s file is missing, downloading it from %s' % (file, url_dl)) wget(url_dl, file) if __name__ == '__main__': update_package()