Pagina 1 di 1

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

Pubblicato: 17 maggio 2016 - 16:32
di Floflobel
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,

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

Pubblicato: 17 maggio 2016 - 23:09
di sfontenau
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

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

Pubblicato: 18 maggio 2016 - 10:24
di Floflobel
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.

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

Pubblicato: 18 maggio 2016 - 11:12
di sfontenau
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

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

Pubblicato: 18 maggio 2016 - 11:44
di Floflobel

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,

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

Pubblicato: 18 maggio 2016 - 12:03
di sfontenau
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...

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

Pubblicato: 18 maggio 2016 - 12:26
di Floflobel
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.

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

Pubblicato: 18 maggio 2016 - 13:14
di sfontenau
Hmm, sì, scusa, non vedo il problema. :?

Succede su tutti?

È stato installato tramite il servizio o la riga di comando?

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

Pubblicato: 18 maggio 2016 - 16:13
di Floflobel
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?

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

Pubblicato: 18 maggio 2016 - 17:07
di sfontenau
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