Page 1 sur 1

[Résolu]OpenBoard en dépendance se réinstalle à chaque fois

Publié : 15 nov. 2019 - 10:15
par Jonattend
Bonjour,
J'utilise un paquet "master" avec, en dépendance, une 20aine de paquets dont openboard.

Si je modifie mon paquet master, les postes clients le mettent à jour ce qui est normal. Mais j'ai remarqué que le paquet openboard était réinstallé à chaque fois même si il est déjà présent sur les machines (contrairement aux autres).

J'avais aussi eu ce problème sur le paquet Anki que j'ai résolu en précisant, dans le paquet Anki, la clé de désinstallation (key='Anki').

Pour OpenBoard, je pense que l'installer est foireux ce qui provoque ce phénomène.

Si je fais un wapt-get list-registry sur un client, j'ai ceci pour openBoard :

{8CCA6AC7-BBF9-4DD2-8E70-A907E0FCA38F}}_is1OpenBoard "C:\Program Files (x86)\OpenBoard\unins000.exe"

On remarque que la commande ne renvoi aucun numéro de version et que la clé UninstallKey me semble étrange.

Via le code suivant :

Code : Tout sélectionner

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

uninstallkey = ['{8CCA6AC7-BBF9-4DD2-8E70-A907E0FCA38F}}_is1']

def install():
    print('installing prefix-openboard')
    install_exe_if_needed("OpenBoard_Installer_1.5.3.exe",'/VERYSILENT /SUPPRESSMSGBOXES /NORESTART',key='{8CCA6AC7-BBF9-4DD2-8E70-A907E0FCA38F}}_is1')
WAPT me renvoi l'erreur suivante durant l'installation sur un client :

Code : Tout sélectionner

EWaptSetupException: Fatal error : OpenBoard_Installer_1.5.3.exe has been executed and UninstallKey {8CCA6AC7-BBF9-4DD2-8E70-A907E0FCA38F}}_is1 has been found in the registry, but version in registry does not match requirements of min_version=0.0.0.0
Que puis-je faire ? Je pense que le souci vient du fait que OpenBoard ne possède pas de n° de version ....... ?

Merci pour vos pistes.

Re: OpenBoard en dépendance se réinstalle à chaque fois

Publié : 15 nov. 2019 - 13:08
par htouvet
Effectivement, l'installeur ne met pas de version dans la base de registre.
Il faut donc la récupérer ailleurs... dans l'exe par exemple d'où la fonction get_installed_version
Et préciser la version minimum dans install_exe_if_needed

Code : Tout sélectionner

def get_installed_version(e):
    ob_path = makepath(programfiles32,'OpenBoard','OpenBoard.exe')
    if isfile(ob_path):
        return get_file_properties(ob_path)['FileVersion']
    else:
        return None

def install():
    print('installing tis-openboard')
    install_exe_if_needed("OpenBoard_Installer_1.5.3.exe",'/VERYSILENT /SUPPRESSMSGBOXES /NORESTART',key='{8CCA6AC7-BBF9-4DD2-8E70-A907E0FCA38F}}_is1',min_version='1.5.3.240',get_version=get_installed_version)

Re: OpenBoard en dépendance se réinstalle à chaque fois

Publié : 15 nov. 2019 - 14:38
par Jonattend
Bonjour,

Merci pour la réponse, c'est fonctionnel !

Pour être sûr d'avoir compris et de ne pas faire un bête copier / coller, pouvez-vous me confirmer que la fonction get_version permet d'aller chercher la version du fichier .exe et retourne le résultat ?

Sinon, même après la modification du paquet, un wapt-get list-registry me retourne toujours rien concernant le n° de version. Est-ce normal ?

Re: OpenBoard en dépendance se réinstalle à chaque fois

Publié : 15 nov. 2019 - 14:48
par htouvet
Oui, on peut fournir à la fonction install_exe_if_needed un paramètre "get_version" qui doit pointer vers une fonction qui prend un paramètre (dictionnaire avec les infos actuellement dans le registre) et doit renvoyer la version.

Par défaut, si ce paramètre n'est pas fourni, la fonction prend la clé version de la base de registre.

Dans le cas d'OpenBoard, ça ne marche pas, car l'installeur ne met rien dans cette clé version. Donc on fournit une fonction alternative, et dans ce cas, j'ai proposé de prendre la version dans les métadonnées de l'exécutable OpenBoard.

C'est normal que list-registry n'affiche rien de plus, car on n'a pas touché à la base de registre.

Re: OpenBoard en dépendance se réinstalle à chaque fois

Publié : 15 nov. 2019 - 16:14
par Jonattend
J'ai tout compris, c'est parfait ;)

Merci !!