Attention : le support de WAPT 1.8.2 a pris fin le 30 juin 2022.

Il y a plusieurs vulnérabilité présente dans la branche WAPT 1.8.2.7393. Merci de mettre à jour sur la version supportée la plus récente. Liste des CVEs (non exhaustive) :
  • * python engine : python 2.7 (CVE-2020-10735, CVE-2015-20107, CVE-2022-0391, CVE-2021-23336, CVE-2021-3177, CVE-2020-27619, CVE-2020-26116, CVE-2019-20907, CVE-2020-8492, etc.)
  • * cryptography : openssl : CVE-2022-2068, CVE-2022-1292, CVE-2022-0778, CVE-2021-4160, CVE-2021-3712, CVE-2021-23841, CVE-2021-23840, CVE-2021-23839, CVE-2020-1971, CVE-2020-1968, CVE-2019-1551
  • * python dependencies : cryptography (CVE-2020-36242, CVE-2020-25659), eventlet (CVE-2021-21419), jinja2 (CVE-2020-28493), psutil (CVE-2019-18874), waitress (CVE-2022-31015), lxml (CVE-2021-4381, CVE-2021-28957, CVE-2020-27783, CVE-2018-19787), ujson (CVE-2022-31117, CVE-2022-31116, CVE-2021-45958), python-ldap (CVE-2021-46823)

Créer un paquet .exe evolué

Améliorer l’installation

Notre paquet Mozilla Firefox ESR est fonctionnel mais il n’est pas encore optimal.

  • le paquet exécute l’installation du logiciel même si le logiciel est déjà installé, il l’écrase dans tous les cas ;

  • le paquet ne vérifie pas la version du logiciel s’il est déjà installé ;

  • le paquet ne vérifie pas la version du logiciel s’il est déjà installé ;

Comme avec les MSI, nous résolvons ces problèmes en utilisant la fonction install_exe_if_needed.

Utiliser install_exe_if_needed

La fonction est sensiblement la même que celle utilisée pour les installeurs MSI, avec quelques différences :

  • la fonction nécessite l’ajout des flags silencieux en paramètre ;

  • la fonction nécessite l’ajout de la clé de désinstallation en paramètre ;

On modifie notre exemple Mozilla Firefox ESR en conséquence :

# -*- coding: utf-8 -*-
from setuphelpers import *

uninstallkey = []

def install():
    print('installing tis-firefox-esr')
    install_exe_if_needed("Firefox Setup 45.5.0esr.exe",
                          silentflags="-ms",
                          key='Mozilla Firefox 45.4.0 ESR (x64 fr)'
                          min_version="45.5.0"
                          killbefore="firefox.exe")
Liste des arguments disponibles avec install_exe_if_need.

Paramètres

Valeur par défaut

Description

exe

nom du fichier .exe à exécuter.

silentflags

paramètres silencieux à passer en argument à l’installeur.

key

None

clé de désinstallation du programme.

min_version

None

version minimale au dessus de laquelle il mettra à jour.

killbefore

[ ]

liste des programmes à tuer avant de lancer l’installation.

accept_returncodes

[0,3010]

codes de retour autres que 0 ou 3010 acceptés en retour par la fonction.

timeout

300

durée d’attente maximale d’installation (en secondes).

get_version

None

valeur passée en paramètre pour le contrôle de version au lieu de celle retournée par la fonction installed_softwares.

remove_old_version

False

Permet d’enclencher automatiquement la suppression d’une uninstallkey identique avec une version précédente à celle mentionnée

force

False

Permet de forcer l’installation même si une uninstallkey avec une version identique est trouvée.

En conséquence, le paquet aura un comportement différent :

  • le logiciel Firefox s’installera uniquement si le logiciel n’est pas installé et si la version est strictement inférieure à 45.5.0, sauf si l’option --force est indiquée lors de l’installation du paquet ;

  • à l’installation, les processus firefox.exe en cours d’exécution seront terminés ;

  • la fonction ajoutera elle-même la clé de désinstallation, donc laisser uninstallkey vide ;

  • à la fin de l’installation, la fonction ira vérifier si l”uninstallkey est bien présente sur le poste et si la version est bien égale ou supérieure à 45.5.0, si ce n’est pas le cas, elle basculera le paquet en ERROR ;

Gérer la désinstallation

Cas particulier d’un dé-installeur non-silencieux

Dans ce cas particulier, un paquet utilisant install_exe_if_needed renseigne la clé de désinstallation, mais cette clé de désinstallation pointe vers un dé-installeur non-silencieux.

Il nous faut contourner le problème en utilisant une fonction qui va supprimer la clé de désinstallation à la fin de l’installation.

:emphasize-lines: 13

# -*- coding: utf-8 -*-
from setuphelpers import *

uninstallkey = []

def install():
    print('installing tis-firefox-esr')
    install_exe_if_needed("Firefox Setup 45.5.0esr.exe",
                          silentflags="-ms",
                          key='Mozilla Firefox 45.4.0 ESR (x64 fr)',
                          min_version="45.5.0",
                          killbefore="firefox.exe")
    uninstallkey.remove('Mozilla Firefox 45.4.0 ESR (x64 fr)')

def uninstall():
    print('uninstalling tis-firefox-esr')
    run(r'"C:\Program Files\Mozilla Firefox\uninstall\helper.exe" -ms')