Bonjour,
J'utilise WAPT 1.5 community
J'ai un paquet qui installe une application à partir d'un MSI par install_msi_if_needed.
Il se met toujours en erreur dans wapt avec l'erreur : "has been installed and the uninstall key found, but version is not good".
Malgré différents essais, pas moyen de corriger cette erreur. Mais finalement, elle m'importe peu, car le logiciel est bien installé et fonctionne correctement. Par contre, comme un autre paquet en dépend, cette erreur bloque l'installation de cet autre paquet.
Est il possible de dire à WAPT, d'une manière ou d'une autre, d'ignorer cette erreur.
Je connais déja le paramètre accept_returncodes, mais dans ce cas, il ne peut pas être utilisé, il me semble.
Merci d'avance pour votre aide.
E.T.
Possibilité ignorer erreur de version ?
Règles du forum
Règles du forum communautaire
* English support on www.reddit.com/r/wapt
* Le support communautaire en français se fait sur ce forum
* Merci de préfixer le titre du topic par [RESOLU] s'il est résolu.
* Merci de ne pas modifier un topic qui est taggé [RESOLU]. Ouvrez un nouveau topic en référençant l'ancien
* Préciser version de WAPT installée, version complète ET numéro de build (2.2.1.11957 / 2.2.2.12337 / etc.) AINSI QUE l'édition Enterprise / Discovery
* Les versions 1.8.2 et antérieures ne sont plus maintenues. Les seules questions acceptées vis à vis de la version 1.8.2 sont liés à la mise à jour vers une version supportée (2.1, 2.2, etc.)
* Préciser OS du serveur (Linux / Windows) et version (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019)
* Préciser OS de la machine d'administration/création des paquets et de la machine avec l'agent qui pose problème le cas échéant (Windows 7 / 10 / 11 / Debian 11 / etc.)
* Eviter de poser plusieurs questions lors de l'ouverture de topic, sinon il risque d'être ignorer. Si plusieurs sujet, ouvrir plusieurs topic, et de préférence les uns après les autres et pas tous en même temps (ie ne pas spammer le forum).
* Inclure directement les morceaux de code, les captures d'écran et autres images directement dans le post. Les liens vers les pastebin, les bitly et autres sites tierces seront systématiquement supprimés.
* Comme tout forum communautaire, le support est fait bénévolement par les membres. Si vous avez besoin d'un support commercial, vous pouvez contacter le service commercial Tranquil IT au 02.40.97.57.55
Règles du forum communautaire
* English support on www.reddit.com/r/wapt
* Le support communautaire en français se fait sur ce forum
* Merci de préfixer le titre du topic par [RESOLU] s'il est résolu.
* Merci de ne pas modifier un topic qui est taggé [RESOLU]. Ouvrez un nouveau topic en référençant l'ancien
* Préciser version de WAPT installée, version complète ET numéro de build (2.2.1.11957 / 2.2.2.12337 / etc.) AINSI QUE l'édition Enterprise / Discovery
* Les versions 1.8.2 et antérieures ne sont plus maintenues. Les seules questions acceptées vis à vis de la version 1.8.2 sont liés à la mise à jour vers une version supportée (2.1, 2.2, etc.)
* Préciser OS du serveur (Linux / Windows) et version (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019)
* Préciser OS de la machine d'administration/création des paquets et de la machine avec l'agent qui pose problème le cas échéant (Windows 7 / 10 / 11 / Debian 11 / etc.)
* Eviter de poser plusieurs questions lors de l'ouverture de topic, sinon il risque d'être ignorer. Si plusieurs sujet, ouvrir plusieurs topic, et de préférence les uns après les autres et pas tous en même temps (ie ne pas spammer le forum).
* Inclure directement les morceaux de code, les captures d'écran et autres images directement dans le post. Les liens vers les pastebin, les bitly et autres sites tierces seront systématiquement supprimés.
* Comme tout forum communautaire, le support est fait bénévolement par les membres. Si vous avez besoin d'un support commercial, vous pouvez contacter le service commercial Tranquil IT au 02.40.97.57.55
Petite précision :
Le numéro de version dans mon fichier config est exactement le même que celui retourné par la commande
get-itemproperty HKLM:\software\wow6432node\microsoft\currentversion\uninstall\uninstall\* | select-object displayname, displayversion
Le numéro de version dans mon fichier config est exactement le même que celui retourné par la commande
get-itemproperty HKLM:\software\wow6432node\microsoft\currentversion\uninstall\uninstall\* | select-object displayname, displayversion
Je soupçonne qu'une des versions est sur 3 composantes "1.2.3" et l'autre sur 4 "1.2.3.0" ?
Vous pouvez forcer la version dans la fonction install_msi_if_needed avec le paramètre :
get_version : fournir une fonction qui retourne la version actuellement installée
Vous pouvez forcer la version dans la fonction install_msi_if_needed avec le paramètre :
get_version : fournir une fonction qui retourne la version actuellement installée
Code : Tout sélectionner
def my_get_version(soft):
print(u'Version installée: %s' % soft['version'])
return soft['version']
def install():
install_msi_if_needed('setup.msi',get_version=my_get_version)
Tranquil IT
Comme la commande powershell renvoie exactement le numéro de version que j'utilise dans mon fichier control, je pensais que non, mais j'avoue que je ne connais pas toutes les subtilités du monde Windows; msi et compagniehtouvet a écrit : Je soupçonne qu'une des versions est sur 3 composantes "1.2.3" et l'autre sur 4 "1.2.3.0" ?
Qu'est ce que je dois envoyer à cette fonction ? (la variable soft, c'est le nom du logiciel, sa clé, l'emplacement de l'exe après install... ?)htouvet a écrit :Code : Tout sélectionner
def my_get_version(soft): print(u'Version installée: %s' % soft['version']) return soft['version']
Merci
E.T.
Bonjour,
J'ai trouvé dans les setuphelpers une fonction qui me paraissait répondre à ma question :
get_msi_properties.
Du coup, les choses devenaient simples :
Sauf que maintenant, j'ai droit à une erreur :
Installing sentinelRuntime
TypeError: 'unicode object is not callable'
Et là, j'avoue, je craque un peu...
Petit tip pour ceux qui n'y auraient pas encore pensé pour tester les setuphelpers en console :
Dans une console python, un simple "import setuphelpers" fonctionne. Du coup, après on gagne du temps pour tester son code
Je sais, c'est bête, mais des fois, on ne pense pas aux choses simples et on perd plein de temps...
J'ai trouvé dans les setuphelpers une fonction qui me paraissait répondre à ma question :
get_msi_properties.
Du coup, les choses devenaient simples :
Code : Tout sélectionner
def install():
print ('Installing sentinelRuntime')
soft = get_msi_properties("Sentinel Runtime.msi")
install_msi_if_needed('Sentinel Runtime.msi', '/q /norestart', get_version=soft['Version'])
Installing sentinelRuntime
TypeError: 'unicode object is not callable'
Et là, j'avoue, je craque un peu...
Petit tip pour ceux qui n'y auraient pas encore pensé pour tester les setuphelpers en console :
Dans une console python, un simple "import setuphelpers" fonctionne. Du coup, après on gagne du temps pour tester son code
Je sais, c'est bête, mais des fois, on ne pense pas aux choses simples et on perd plein de temps...
Bonjour,
Après de multiples tests, erreurs, corrections... voila où j'en suis.
Dans mon code précédent, j'avais une erreur parce que get_version attendait un "callable object" et pas un "string", d'où la fonction (je n'avais pas compris pourquoi elle était là avant).
Maintenant, j'ai droit à l'erreur :
TypeError: MSIOpenDatabase() argument 1 must be string, not dict
J'ai pourtant essayé d'utiliser la fonction str() dans ma fonction pour y remédier, mais rien n'y fait.
Je continue de lancer des bouteilles à la mer, en espérant qu'un jour, l'une d'elles inspire quelqu'un
E.T.
Après de multiples tests, erreurs, corrections... voila où j'en suis.
Code : Tout sélectionner
# -*- coding: utf-8 -*-
from setuphelpers import *
uninstallkey = []
def get_sentinel_version(soft="Sentinel Runtime.msi"):
sentiProps = get_msi_properties(soft)
sentiVers = str(sentiProps['Version'])
#print('Type de sentiVers : ' type(sentivers))
return sentiVers
def install():
print('installing unilim-sentinelRuntime')
install_msi_if_needed('Sentinel Runtime.msi', '/q /norestart', get_version=get_sentinel_version)
Maintenant, j'ai droit à l'erreur :
TypeError: MSIOpenDatabase() argument 1 must be string, not dict
J'ai pourtant essayé d'utiliser la fonction str() dans ma fonction pour y remédier, mais rien n'y fait.
Je continue de lancer des bouteilles à la mer, en espérant qu'un jour, l'une d'elles inspire quelqu'un
E.T.
- sfonteneau
- Expert WAPT
- Messages : 1796
- Inscription : 10 juil. 2014 - 23:52
- Contact :
Dans votre cas le test n'est pas bon
Le but de la manœuvre est d'indiquer à wapt de ne pas aller chercher la version du logiciel dans uninstallkey du logiciel mais ailleurs.
get_version sert à indiquer à wapt le numéro de version du logiciel.
exemple avec le logiciel naps :
on indique à wapt d'aller récupérer la version dans le nom du logiciel.
Dans votre code, vous allez récupérer le numéro de version dans le fichier msi qui est dans le paquet, ce n'est pas logique.
Pour résoudre votre problématique vous pouvez aussi modifier tout simplement le min_version en appelant install_msi_if... plutôt que d'utiliser get_version
https://github.com/tranquilit/WAPT/blob ... s.py#L3815
Le but de la manœuvre est d'indiquer à wapt de ne pas aller chercher la version du logiciel dans uninstallkey du logiciel mais ailleurs.
get_version sert à indiquer à wapt le numéro de version du logiciel.
exemple avec le logiciel naps :
Code : Tout sélectionner
def versnaps2(key):
return key['name'].replace('NAPS2 ','')
install_exe_if_needed('naps2-5.3.3-setup.exe',silentflags='/VERYSILENT',key='NAPS2 (Not Another PDF Scanner 2)_is1',get_version=versnaps2)
Dans votre code, vous allez récupérer le numéro de version dans le fichier msi qui est dans le paquet, ce n'est pas logique.
Pour résoudre votre problématique vous pouvez aussi modifier tout simplement le min_version en appelant install_msi_if... plutôt que d'utiliser get_version
https://github.com/tranquilit/WAPT/blob ... s.py#L3815
Bonjour,
Merci de votre réponse.
En fait, j'avais décidé de reprendre tout à zéro, et je n'ai plus de probleme de conflit de version. C'est assez bizarre, la seule différence avec mon script de départ, c'est que je n'ai pas précisé de silent_options dans les paramétres (en fait, /q et /norestart sont déja par défaut dans install_msi_if_needed, j'ai remarqué ça dans le code), et du coup, ça fonctionne.
Je ne m'explique pas pourquoi...
A cause de ce probleme, j'ai perdu pas mal de temps, mais sacrément gagné en connaissances sur le fonctionnement de wapt, au travers de mes tests et de vos réponses, qui vont m'être très utiles par la suite.
Merci à vous.
E.T.
Merci de votre réponse.
En fait, j'avais décidé de reprendre tout à zéro, et je n'ai plus de probleme de conflit de version. C'est assez bizarre, la seule différence avec mon script de départ, c'est que je n'ai pas précisé de silent_options dans les paramétres (en fait, /q et /norestart sont déja par défaut dans install_msi_if_needed, j'ai remarqué ça dans le code), et du coup, ça fonctionne.
Je ne m'explique pas pourquoi...
A cause de ce probleme, j'ai perdu pas mal de temps, mais sacrément gagné en connaissances sur le fonctionnement de wapt, au travers de mes tests et de vos réponses, qui vont m'être très utiles par la suite.
Merci à vous.
E.T.