Seite 1 von 1

need_install() erhielt ein unerwartetes Schlüsselwortargument 'force'

Veröffentlicht: 17. Mai 2016 - 16:32 Uhr
von Floflobel
Guten Morgen,

Ich habe alle meine Pakete modifiziert, um sie zu verbessern, und stoße nun auf diesen Fehler auf mehreren Rechnern:

Code: Alle auswählen

need_install() got an unexpected keyword argument 'force'
Ich habe in einem anderen Thread gelesen, dass ein Patch im Git-Repository verfügbar ist. Ich muss aber gestehen, dass ich nicht verstanden habe, wie man ihn anwendet.
Ich habe die richtigen Zeilen ersetzt. Muss ich das Projekt neu kompilieren? Und die Datei an alle Rechner senden?

Danke schön,

Betreff: need_install() erhielt ein unerwartetes Schlüsselwortargument 'force'

Veröffentlicht: 17. Mai 2016 - 23:09 Uhr
von Sfonteneau
Ich glaube nicht, dass der Patch das Problem auf den ersten Blick behebt.

Könnten Sie sich die Paketstruktur ansehen, um das Problem zu verstehen?

Welche Version des WAPT-Clients verwenden Sie?

Falls es ein Problem mit den neuen Funktionen `install_exe_if_needed` und `install_msi_if_needed` gibt,
würde das – wenn ich es richtig verstehe – bedeuten, dass das Argument `force` des Befehls `need_install` falsch interpretiert wird:

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

Simon

Betreff: need_install() erhielt ein unerwartetes Schlüsselwortargument 'force'

Veröffentlicht: 18. Mai 2016 - 10:24 Uhr
von Floflobel
Guten Morgen,

Die verschiedenen Clients, bei denen dieses Problem auftritt, verwenden Version 1.3.5.0. Falls dies nicht der Fall ist, erzwinge ich das Update.
Hier ist eines der Pakete, das den Fehler enthält:

Code: Alle auswählen

# -*- 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')
Fehler: TypeError: need_install() erhielt ein unerwartetes Schlüsselwortargument 'force'

Ich habe den Namen und den Ukey ersetzt, da es sich um proprietäre Software handelt. Der Fehler besteht jedoch weiterhin bei mehreren Paketen.
Ich verwende install_exe_if_needed & install_msi_if_needed.

Betreff: need_install() erhielt ein unerwartetes Schlüsselwortargument 'force'

Veröffentlicht: 18. Mai 2016 - 11:12 Uhr
von Sfonteneau
Ich weiß nicht, ob das Ihr Problem löst, aber ich würde es eher so machen:

Code: Alle auswählen

    
    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):
Dadurch funktioniert die Option `--force` für Ihr Paket (ich verwende hier wieder das Beispiel `setuphelper`):
https://github.com/tranquilit/WAPT/blob ... s.py#L3351

Simon

Betreff: need_install() erhielt ein unerwartetes Schlüsselwortargument 'force'

Veröffentlicht: 18. Mai 2016 - 11:44 Uhr
von Floflobel

Code: Alle auswählen

install_exe_if_needed(foldertmp + '\\' + execfile, silentflags=silentparameters, key=ukey, min_version=version, accept_returncodes=[0], timeout=600, force=force)
Ich füge also einfach force=force hinzu? Und ändere sonst nichts?
Oder sollte ich need_install verwenden?

Aufrichtig,

Betreff: need_install() erhielt ein unerwartetes Schlüsselwortargument 'force'

Veröffentlicht: 18. Mai 2016 - 12:03 Uhr
von Sfonteneau
Ähnliche Artikel:

Code: Alle auswählen

# -*- 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')
Ich habe zwar starke Zweifel, ob es das wirklich ist, aber egal...

Betreff: need_install() erhielt ein unerwartetes Schlüsselwortargument 'force'

Veröffentlicht: 18. Mai 2016 - 12:26 Uhr
von Floflobel
Ich habe den Test gerade ausgeführt, und die zusätzlichen Zeilen haben nichts geändert.
Wir müssen wohl auf eine Rückmeldung vom Entwicklerteam warten.

Trotzdem vielen Dank für Ihre Hilfe.

Betreff: need_install() erhielt ein unerwartetes Schlüsselwortargument 'force'

Veröffentlicht: 18. Mai 2016 - 13:14 Uhr
von Sfonteneau
Hmm, ja, tut mir leid, ich sehe das Problem nicht. :?

Tritt es bei allen Geräten auf?

Wurde es über den Dienst oder die Kommandozeile installiert?

Betreff: need_install() erhielt ein unerwartetes Schlüsselwortargument 'force'

Veröffentlicht: 18. Mai 2016 - 16:13 Uhr
von Floflobel
Das passiert zufällig... bei Paketen mit derselben Struktur.
Nicht alle Rechner sind betroffen, aber es wird wahrscheinlich nach und nach auftreten.

Die Installation erfolgt über WAPT-EXIT, daher vielen Dank an den Agenten.

Wissen Sie, wie ich einen Entwickler kontaktieren kann?

Betreff: need_install() erhielt ein unerwartetes Schlüsselwortargument 'force'

Veröffentlicht: 18. Mai 2016 - 17:07 Uhr
von Sfonteneau
Sie posten normalerweise regelmäßig hier oder auf der Mailingliste.
Alternativ können Sie direkt ein Support-Ticket einreichen.

Ich glaube, ich verstehe Ihr Problem.

Die Fehlermeldung besagt, dass die Funktion `need_install` nicht erkennt, warum Sie ihr den Parameter `force` übergeben.

Ich bin mir fast sicher, dass Ihr Client Version 1.2.3.3 (oder niedriger) ist.

Hier ist die Funktion `need_install` in Version 1.2.3.3:
https://github.com/tranquilit/WAPT/blob ... s.py#L3002

Und in der neuesten Version:
https://github.com/tranquilit/WAPT/blob ... s.py#L3116

Bitte überprüfen Sie auf dem WAPT-Client (auf dem Rechner, auf dem es nicht funktioniert), ob die Funktion `need_install` im setuphelper so aussieht wie oben beschrieben.

Manchmal funktionieren WAPT-Client-Updates nicht richtig; das Paket wird zwar als installiert angezeigt, aber der WAPT-Client ist nicht auf dem neuesten Stand.

Sag mir Bescheid, aber ich bin mir fast sicher, dass das das Problem ist.

Simon