Bonjour,
Version du code mise à jour au 09/2021 :
Code : Tout sélectionner
# -*- coding: utf-8 -*-
from setuphelpers import *
uninstallkey = []
# Defining variables
bin_name_string = 'Logiciel Gesper - installation-%s.exe'
bin_temp = 'Logiciel Gesper - installation.exe'
url_dl = 'https://www.aplon.org/Ressources/Documents/T%C3%A9l%C3%A9chargements/Gesper%20(RH)/Logiciel%20Gesper%20-%20installation.exe'
app_uninstallkey = '{A2A6875A-1AAA-467F-948F-76851D7013AA}_is1'
SERVERNAME = 'MONSERVERGESPER' # Le nom NETBIOS du serveur gesper
def install():
# Initializing variables
package_version = control.version.split('-',1)[0]
bin_name = bin_name_string % package_version
session_setup()
print('Installing: %s' % bin_name)
try:
install_exe_if_needed(bin_name,'/verysilent /TASKS="MSDENonInstall"',key=app_uninstallkey,min_version=package_version,killbefore='gesper.exe',timeout=600)
uninstallkey.remove(app_uninstallkey)
except TimeoutExpired:
pass
killalltasks('AdminConsole.exe')
create_desktop_shortcut(r'Gesper',target=u'C:\Program Files (x86)\CAP-RH\Gesper\Gesper.exe')
def session_setup():
import tempfile
pathparamsfile = makepath(tempfile.gettempdir(),'params.ini')
pathuser = user_appdata()
data = r"""[SETUP]
data_server=%s
data_access=
archives_path=C:\GESPER_BACKUP
""" % SERVERNAME
fichier = open(pathparamsfile, "w")
fichier.write(data)
fichier.close()
mkdirs('%s\\Gesper' % pathuser)
filecopyto(pathparamsfile,'%s/Gesper' % pathuser)
remove_file(pathparamsfile)
def update_package():
print('Download/Update package content from upstream binary sources')
# Initializing variables
proxies = get_proxies()
if not proxies:
proxies = get_proxies_from_wapt()
latest_bin = bin_temp
version = '1.0' # Fake version
print('Download url is: ' + url_dl)
# Downloading latest binaries
if isfile(bin_temp):
remove_file(bin_temp)
if not isfile(latest_bin):
print('Downloading: %s' % latest_bin)
wget(url_dl, latest_bin, proxies=proxies)
# Checking version from file
version_from_file = get_version_from_binary(latest_bin)
if version != version_from_file:
os.rename(latest_bin,bin_name_string % version_from_file)
version = version_from_file
# Changing version of the package
control.version = '%s-%s' % (version, int(control.version.split('-')[-1])+1)
control.save_control_to_wapt()
print('Changing version to: %s in WAPT\\control' % control.version)
# Deleting outdated binaries
remove_outdated_binaries(version)
# put here what to do to update package content with newer installers.
# launched with command wapt-get update-package-sources <path-to-wapt-directory>
# implicit context variables are WAPT, basedir, control, user, params, run
# if attributes in control are changed, they should be explicitly saved to package file with control.save_control_to_wapt()
def get_proxies():
import platform
if platform.python_version_tuple()[0] == '3':
from urllib.request import getproxies
else:
from urllib import getproxies
return getproxies()
def get_proxies_from_wapt():
import platform
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, parameter='ProductVersion'):
if filename.endswith('.msi'):
return get_msi_properties(filename)[parameter]
else:
return get_file_properties(filename)[parameter]
def uninstall():
print('Uninstalling: %s' % control.package)
run(r'"%s\CAP-RH\Gesper\unins000.exe" /verysilent' % programfiles32)
run(r'"MsiExec.exe" /X{81BDC5D8-E319-435E-91F5-0896E599717A} /qn')
remove_desktop_shortcut('Gesper.lnk')