need_install() got an unexpected keyword argument 'force'

Question about WAPT Server / Requêtes et aides autour du serveur Wapt
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
Verrouillé
Floflobel
Messages : 135
Enregistré le : 15 oct. 2015 - 17:32

17 mai 2016 - 16:32

Bonjour,

J'ai modifié tout mes paquets pour les améliorer et je me retrouve avec cette erreur sur pas mal de poste :

Code : Tout sélectionner

need_install() got an unexpected keyword argument 'force'
J'avais vue sur un autre topic qu'un patch était proposé sur le git. Mais je n'avoue pas avoir compris comment le patcher.
J'ai bien remplacé les bonnes lignes. Mais il faut recompiler le projet? Et envoyer le fichier sur tous les postes?

En vous remerciant,
Avatar du membre
sfonteneau
Expert WAPT
Messages : 2084
Enregistré le : 10 juil. 2014 - 23:52
Contact :

17 mai 2016 - 23:09

Je ne pense pas que le patch corrige cela a première vu.

Peut t’ont voir la structure du paquet pour comprendre le problème ?

Avoir la version du client wapt ?

Si c'est un problème avec les nouvelle fonction install_exe_if_needed et install_msi_if_needed
Cela signifierais si j'ai bien compris que l'argument force fournis a la commande need_install est mal compris :

https://github.com/tranquilit/WAPT/blob ... s.py#L3407

Simon
Floflobel
Messages : 135
Enregistré le : 15 oct. 2015 - 17:32

18 mai 2016 - 10:24

Bonjour,

Les différents clients qui ont ce problème sont en version 1.3.5.0. Si ce n'est pas le cas je force la mise à jour.
Voici un des package en erreur :

Code : Tout sélectionner

# -*- coding: utf-8 -*-
import urllib

from setuphelpers import *

uninstallkey = []

# Name of the software
namesoftware='soft'

# Uninstall register key
# 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\
ukey='{00000000000000}'

# Version of software
version='3.19'

# Unzip folder define in Winrar
foldertmp='C:\Temp'

# Name of execute file
execfile='soft.exe'

# Insert the silent parameters
silentparameters='/install /silent /norestart'

# Link to download the software
downloadlink='http://repo/exe/soft.exe'

# Name of installation files
downloadfilename='soft.exe'


def install():
    print(foldertmp + '\\' + execfile)
    if need_install(ukey,min_version=version,force=False):
        if isfile(foldertmp + '\\' + execfile):
            print('Installation files are already present - Installing ' + namesoftware)
            install_exe_if_needed(foldertmp + '\\' + execfile, silentflags=silentparameters, key=ukey, min_version=version, accept_returncodes=[0], timeout=600)
            #remove_tree(foldertmp)
        else:
            print('Download and unzip ' + namesoftware)
            os.mkdir(foldertmp)
            urllib.urlretrieve (downloadlink, foldertmp + '\\' + execfile)
			#wget(downloadlink,downloadfilename)
            #run(downloadfilename)
            print('Installing ' + namesoftware)
            install_exe_if_needed(foldertmp + '\\' + execfile, silentflags=silentparameters, key=ukey, min_version=version, accept_returncodes=[0], timeout=600)
            #remove_tree(foldertmp)
    else:
        print('The software is already installed in this version or newer version')
Erreur : TypeError: need_install() got an unexpected keyword argument 'force'

J'ai remplacé le nom et la ukey car c'est un logiciel privé. Mais l'erreur revient sur plusieurs packages.
J'utilise bien install_exe_if_needed & install_msi_if_needed.
Avatar du membre
sfonteneau
Expert WAPT
Messages : 2084
Enregistré le : 10 juil. 2014 - 23:52
Contact :

18 mai 2016 - 11:12

Je sais pas si ça va résoudre ton soucis mais déjà je ferais plus comme ça:

Code : Tout sélectionner

    
    import inspect
    caller_globals = inspect.stack()[1][0].f_globals
    WAPT = caller_globals.get('WAPT',None)
    force = WAPT and WAPT.options.force
    if need_install(ukey,min_version=version,force=force):
Ça permet que l'option --force fonctionne pour ton paquet (je reprend l'exemple du setuphelper) ici:
https://github.com/tranquilit/WAPT/blob ... s.py#L3351

Simon
Floflobel
Messages : 135
Enregistré le : 15 oct. 2015 - 17:32

18 mai 2016 - 11:44

Code : Tout sélectionner

install_exe_if_needed(foldertmp + '\\' + execfile, silentflags=silentparameters, key=ukey, min_version=version, accept_returncodes=[0], timeout=600, force=force)
J'ajoute donc force=force ? Et je ne change rien d'autre ?
Ou dois-je utiliser le need_install ?

Cordialement,
Avatar du membre
sfonteneau
Expert WAPT
Messages : 2084
Enregistré le : 10 juil. 2014 - 23:52
Contact :

18 mai 2016 - 12:03

Plus comme ca :

Code : Tout sélectionner

# -*- coding: utf-8 -*-
import urllib

from setuphelpers import *

uninstallkey = []

# Name of the software
namesoftware='soft'

# Uninstall register key
# 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\
ukey='{00000000000000}'

# Version of software
version='3.19'

# Unzip folder define in Winrar
foldertmp='C:\Temp'

# Name of execute file
execfile='soft.exe'

# Insert the silent parameters
silentparameters='/install /silent /norestart'

# Link to download the software
downloadlink='http://repo/exe/soft.exe'

# Name of installation files
downloadfilename='soft.exe'


def install():
    print(foldertmp + '\\' + execfile)
    import inspect
    caller_globals = inspect.stack()[1][0].f_globals
    WAPT = caller_globals.get('WAPT',None)
    force = WAPT and WAPT.options.force
    if need_install(ukey,min_version=version,force=force):
        if isfile(foldertmp + '\\' + execfile):
            print('Installation files are already present - Installing ' + namesoftware)
            install_exe_if_needed(foldertmp + '\\' + execfile, silentflags=silentparameters, key=ukey, min_version=version, accept_returncodes=[0], timeout=600)
            #remove_tree(foldertmp)
        else:
            print('Download and unzip ' + namesoftware)
            os.mkdir(foldertmp)
            urllib.urlretrieve (downloadlink, foldertmp + '\\' + execfile)
         #wget(downloadlink,downloadfilename)
            #run(downloadfilename)
            print('Installing ' + namesoftware)
            install_exe_if_needed(foldertmp + '\\' + execfile, silentflags=silentparameters, key=ukey, min_version=version, accept_returncodes=[0], timeout=600)
            #remove_tree(foldertmp)
    else:
        print('The software is already installed in this version or newer version')
J'ai des gros doute sur le fait que ce soit ça mais bon ...
Floflobel
Messages : 135
Enregistré le : 15 oct. 2015 - 17:32

18 mai 2016 - 12:26

Je viens d'effectuer le test rien ne bouge avec ces quelques lignes en plus.
J'ai bien peur qu'il va falloir attendre le retour de quelqu'un de l'équipe de dev.

En tous cas merci pour ton aide.
Avatar du membre
sfonteneau
Expert WAPT
Messages : 2084
Enregistré le : 10 juil. 2014 - 23:52
Contact :

18 mai 2016 - 13:14

Hum oui désolé je ne voie pas le soucis :?

Ça le fait sur tous ?

Installation par le service ou ligne de commande ?
Floflobel
Messages : 135
Enregistré le : 15 oct. 2015 - 17:32

18 mai 2016 - 16:13

Cela arrive de manière aléatoire .. Sur des paquets de la même structure.
Tous les postes ne sont pas impacté mais celà risque d'arriver petit à petit..

Installation via WAPT-EXIT donc grâce à l'agent.

Serais-tu comment je peux contacter un développeur ?
Avatar du membre
sfonteneau
Expert WAPT
Messages : 2084
Enregistré le : 10 juil. 2014 - 23:52
Contact :

18 mai 2016 - 17:07

Ils passent normalement ici régulièrement ou sur la mailing liste.
Sinon tu peux prendre directement un ticket chez eux.

Je crois avoir compris ton problème.

Le message d'erreur dit que la fonction need_install ne comprend pas pourquoi tu lui passe le paramètre force

Je suis presque persuadée que ton client est en version 1.2.3.3 (ou moins)

Voici la fonction need_install dans la version 1.2.3.3:
https://github.com/tranquilit/WAPT/blob ... s.py#L3002

Et dans la dernière version :
https://github.com/tranquilit/WAPT/blob ... s.py#L3116

Il faudrait vérifier sur le wapt client (sur la machine qui ne fonctionne pas) si dans le setuphelper la fonction need_install ressemble bien a ce que je t'ai envoyée au dessus

Parfois les mise a jour des client wapt fonctionne mal, le paquet apparaît comme installer mais le client wapt n'est pas dans la dernière version dispo.

Dit moi mais je suis presque persuadée que c'est ça.

Simon
Verrouillé