Page 1 sur 1

Indiquer la validité d'une installation

Posté : 06 mars 2017 - 16:00
par raikyn
Bonjour,

Je crée régulièrement des paquets depuis un peu plus d'un an et je rencontre un "problème" :

J'ai crée un paquet pour installer un logiciel métier (ERDAS 2014 en l’occurrence), celui-ci s'installe sans aucun problème mais WAPT considère que l'installation est incorrecte, aucune idée de la raison.

Du coup, ce paquet (malgré sa bonne configuration) tentera de se réinstaller à chaque fois qu'une modification sera effectuée sur les PCs où le paquet est installé.

Ma question est la suivante : Est-il possible d'indiquer à WAPT (via la console) qu'un paquet est bien installé? (Forcer l'état OK?).

Je ne souhaite pas utiliser la fonction "Oublier le paquet", car je souhaiterai pouvoir désinstaller celui-ci proprement via la console WAPT quand besoin est.

Si cette possibilité n'existe pas, ce serait peut-être une idée d'implémentation non?

Re: Indiquer la validité d'une installation

Posté : 06 mars 2017 - 16:30
par sfonteneau
Bonjour

Pour vous aider nous avons besoin d'avoir le contenue du paquet (setup.py)

Si par exemple vous lancer un run il est possible que celui-ci ne renvoie pas un status 0 et donc wapt considère que l’installation a échouée.

Pour savoir exactement que qui dit wapt il faut nous indiquer l'erreur:
https://www.wapt.fr/fr/doc/Utilisation/ ... et-general

Simon

Re: Indiquer la validité d'une installation

Posté : 07 mars 2017 - 08:53
par raikyn
Bonjour, apparement c'est bien un problème de "status" qui n'est pas à 0

Voici le contenu du setup.py :

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

uninstallkey = ['{4099F374-39B8-4226-9AC2-2069CEE8BF82}']


def install():
run(r'"foundation\Setup.exe" /s ERDASFoundation2014 /ni ACCEPT_EULA=1')


L'erreur :
CalledProcessError: Command '('"foundation\\Setup.exe" /s ERDASFoundation2014 /ni ACCEPT_EULA=1',)' returned non-zero exit status 1

Je précise qui si je lance cette commande depuis l'invite de commande directement sur le PC, je n'ai aucune erreur.

Re: Indiquer la validité d'une installation

Posté : 07 mars 2017 - 11:01
par Floflobel
Bonjour,

Personnellement j'utilise la fonction install_exe_if_needed: https://dev.tranquil.it/sphinxdocs/sour ... _if_needed

Il faudra au préalable vous munir de l'uninstall_key, voici ou elle se trouve :

Code : Tout sélectionner

# For OS 64bits and Software 32bits version : HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\
# For OS 32 bits or 64bits (and Software 64bits version) : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
Cordialement,

Re: Indiquer la validité d'une installation

Posté : 07 mars 2017 - 18:01
par sfonteneau
La fonction install_exe_if_needed basculera également en erreur.

https://dev.tranquil.it/sphinxdocs/sour ... _if_needed

En effet celle-ci accepte les exit code 0, 3010 le code retour n'en fait pas partie 1 n'en fait partie.

Effectivement si vous utilisez install_exe_if_needed au deuxième passage celui-ci ne devrait pas générer d'erreur car la uninstallkey sera trouvée !

Vous pouvez si vous le souhaitez ajouter l'exit code 1 comme ok pour wapt.

run('"install.exe" /s',accept_returncodes=[0, 1, 3010])

Mais l' exit code 1 est t'il un exit code normal ?

Simon

Re: Indiquer la validité d'une installation

Posté : 08 mars 2017 - 09:59
par raikyn
Merci beaucoup ça fonctionne grâce au accept_returncodes=[0, 1, 3010].
J'avais déjà vu cette fonction, mais ne l'ayant jamais utilisé j'avais fini par l'oublier...désolé du dérangement.

En ce qui concerne l'exit code 1 j'avoue que, dans la plupart des cas, il correspondait bien à un problème dans l’installation.
Mais pour ERDAS Foundation 2014, l'installation est complète malgré ce code.

Merci encore!

Re: Indiquer la validité d'une installation

Posté : 08 mars 2017 - 10:15
par sfonteneau
Le mieux est donc comme l'indiquait Floflobel d'utiliser install_exe_if_needed avec le accept_returncodes=[0, 1, 3010]

Ainsi si la uninstallkey n'est pas trouver après le lancement du run le paquet basculera en erreur (pour une bonne raison ;-) )