need_install() ha ricevuto un argomento di parola chiave inaspettato 'force'

Domande sul server WAPT / Richieste e assistenza relative al server WAPT
Regole del forum
Regole del forum della community
* Supporto in inglese su www.reddit.com/r/wapt
* Supporto della community in francese disponibile su questo forum
* Si prega di anteporre [RISOLTO] al titolo dell'argomento se è stato risolto.
* Si prega di non modificare un argomento contrassegnato con [RISOLTO]. Aprire un nuovo argomento facendo riferimento a quello precedente.
* Specificare la versione di WAPT installata, la versione completa e il numero di build (2.2.1.11957 / 2.2.2.12337 / ecc.) nonché l'edizione Enterprise/Discovery.
* Le versioni 1.8.2 e precedenti non sono più supportate. Le uniche domande accettate relative alla versione 1.8.2 riguardano l'aggiornamento a una versione supportata (2.1, 2.2, ecc.).
* Specificare il sistema operativo del server (Linux/Windows) e la versione (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Specificare il sistema operativo della macchina di amministrazione/creazione dei pacchetti e della macchina con l'agente problematico, se applicabile (Windows 7/10/11/Debian 11/ecc.).
* Evitare di porre più domande quando si apre una discussione, altrimenti potrebbe essere ignorata. Se ci sono più discussioni, aprirle separatamente, preferibilmente una dopo l'altra e non tutte contemporaneamente (ovvero, non intasare il forum).
* Includere frammenti di codice, screenshot e altre immagini direttamente nel post. I link a Pastebin, Bitly e altri siti di terze parti verranno sistematicamente rimossi.
* Come in qualsiasi forum della community, il supporto è fornito volontariamente dai membri. Se si necessita di supporto commerciale, è possibile contattare il reparto vendite di Tranquil IT al numero 02.40.97.57.55
Bloccato
Floflobel
Messaggi: 135
Registrazione: 15 ottobre 2015 - 17:32

17 maggio 2016 - 16:32

Buongiorno,

Ho modificato tutti i miei pacchetti per migliorarli e riscontro questo errore su parecchie macchine:

Codice: Seleziona tutto

need_install() got an unexpected keyword argument 'force'
Ho visto in un altro thread che era disponibile una patch sul repository git. Ma confesso che non ho capito come applicarla.
Ho sostituito le righe corrette. Ma devo ricompilare il progetto? E inviare il file a tutte le macchine?

Grazie,
Avatar utente
sfontenau
Esperto WAPT
Messaggi: 2312
Registrato: 10 luglio 2014 - 23:52
Contatto:

17 maggio 2016 - 23:09

A prima vista non credo che la patch risolva

il problema. Potresti mostrarmi la struttura del pacchetto per capire meglio?

Inoltre, qual è la versione del client WAPT in uso?

Se il problema riguarda le nuove funzioni `install_exe_if_needed` e `install_msi_if_needed`,
significherebbe, se ho capito bene, che l'argomento `force` fornito al comando `need_install` viene interpretato in modo errato:

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

Simon
Floflobel
Messaggi: 135
Registrazione: 15 ottobre 2015 - 17:32

18 maggio 2016 - 10:24

Buongiorno,

I vari client che riscontrano questo problema utilizzano la versione 1.3.5.0. In caso contrario, forzo l'aggiornamento.
Ecco uno dei pacchetti con l'errore:

Codice: Seleziona tutto

# -*- 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')
Errore: TypeError: need_install() ha ricevuto un argomento di parola chiave imprevisto 'force'

Ho sostituito il nome e la chiave inglese perché si tratta di software proprietario. Ma l'errore persiste su diversi pacchetti.
Io uso install_exe_if_needed e install_msi_if_needed.
Avatar utente
sfontenau
Esperto WAPT
Messaggi: 2312
Registrato: 10 luglio 2014 - 23:52
Contatto:

18 maggio 2016 - 11:12

Non so se questo risolverà il tuo problema, ma io farei più o meno così:

Codice: Seleziona tutto

    
    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):
Ciò consente all'opzione --force di funzionare per il tuo pacchetto (sto utilizzando di nuovo l'esempio setuphelper):
https://github.com/tranquilit/WAPT/blob ... s.py#L3351

Simone
Floflobel
Messaggi: 135
Registrazione: 15 ottobre 2015 - 17:32

18 maggio 2016 - 11:44

Codice: Seleziona tutto

install_exe_if_needed(foldertmp + '\\' + execfile, silentflags=silentparameters, key=ukey, min_version=version, accept_returncodes=[0], timeout=600, force=force)
Quindi aggiungo solo force=force? E non cambio nient'altro?
Oppure dovrei usare need_install?

Sinceramente,
Avatar utente
sfontenau
Esperto WAPT
Messaggi: 2312
Registrato: 10 luglio 2014 - 23:52
Contatto:

18 maggio 2016 - 12:03

Altri articoli simili:

Codice: Seleziona tutto

# -*- 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')
Ho seri dubbi che sia questo, ma comunque...
Floflobel
Messaggi: 135
Registrazione: 15 ottobre 2015 - 17:32

18 maggio 2016 - 12:26

Ho appena eseguito il test e non è cambiato nulla con queste righe aggiuntive.
Temo che dovremo aspettare una risposta dal team di sviluppo.

In ogni caso, grazie per l'aiuto.
Avatar utente
sfontenau
Esperto WAPT
Messaggi: 2312
Registrato: 10 luglio 2014 - 23:52
Contatto:

18 maggio 2016 - 13:14

Hmm, sì, scusa, non vedo il problema. :?

Succede su tutti?

È stato installato tramite il servizio o la riga di comando?
Floflobel
Messaggi: 135
Registrazione: 15 ottobre 2015 - 17:32

18 maggio 2016 - 16:13

Questo problema si verifica in modo casuale... su pacchetti con la stessa struttura.
Non tutte le macchine sono interessate, ma è probabile che si manifesti gradualmente.

L'installazione avviene tramite WAPT-EXIT, quindi grazie all'agente.

Sapete come posso contattare uno sviluppatore?
Avatar utente
sfontenau
Esperto WAPT
Messaggi: 2312
Registrato: 10 luglio 2014 - 23:52
Contatto:

18 maggio 2016 - 17:07

Di solito pubblicano regolarmente qui o sulla mailing list.
In alternativa, puoi inviare una richiesta di supporto direttamente a loro.

Credo di aver capito il tuo problema.

Il messaggio di errore dice che la funzione `need_install` non capisce perché le stai passando il parametro `force`.

Sono quasi certo che il tuo client sia la versione 1.2.3.3 (o inferiore).

Ecco la funzione `need_install` nella versione 1.2.3.3:
https://github.com/tranquilit/WAPT/blob ... s.py#L3002

E nell'ultima versione:
https://github.com/tranquilit/WAPT/blob ... s.py#L3116

Dovresti controllare sul client WAPT (sul computer che non funziona) se la funzione `need_install` in setuphelper è simile a quella che ti ho inviato sopra.

A volte gli aggiornamenti del client WAPT non funzionano correttamente; il pacchetto risulta installato, ma il client WAPT non è aggiornato all'ultima versione.

Fammi sapere, ma sono quasi certo che il problema sia quello.

Simon
Bloccato