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

Fragen zum WAPT-Server / Anfragen und Hilfe im Zusammenhang mit dem WAPT-Server
Forumregeln
Community-Forumregeln
* Englischer Support auf www.reddit.com/r/wapt
* Französischer Community-Support ist in diesem Forum verfügbar.
* Bitte kennzeichnen Sie gelöste Themen mit [GELÖST].
* Bitte bearbeiten Sie keine Themen, die mit [GELÖST] markiert sind. Erstellen Sie stattdessen ein neues Thema und verweisen Sie auf das alte.
* Geben Sie die installierte WAPT-Version, die vollständige Versionsnummer und die Build-Nummer (2.2.1.11957 / 2.2.2.12337 / usw.) sowie die Enterprise-/Discovery-Edition an.
* Versionen 1.8.2 und älter werden nicht mehr unterstützt. Fragen zu Version 1.8.2 werden nur beantwortet, wenn sie sich auf ein Upgrade auf eine unterstützte Version (2.1, 2.2 usw.) beziehen.
* Geben Sie das Server-Betriebssystem (Linux/Windows) und die Version (Debian Buster/Bullseye – CentOS 7 – Windows Server 2012/2016/2019) an.
* Geben Sie gegebenenfalls das Betriebssystem des Administrations-/Paketerstellungsrechners und des Rechners mit dem problematischen Agenten an (Windows 7/10/11/Debian 11/etc.).
* Vermeiden Sie es, mehrere Fragen in einem Thema zu stellen, da diese sonst möglicherweise ignoriert werden. Falls mehrere Themen relevant sind, erstellen Sie bitte separate Themen, vorzugsweise nacheinander und nicht gleichzeitig (d. h. vermeiden Sie Spam im Forum).
* Fügen Sie Code-Snippets, Screenshots und andere Bilder direkt in Ihren Beitrag ein. Links zu Pastebin, Bitly und anderen Drittanbieterseiten werden systematisch entfernt.
* Wie in jedem Community-Forum erfolgt die Unterstützung freiwillig durch die Mitglieder. Für kommerziellen Support kontaktieren Sie bitte den Vertrieb von Tranquil IT unter +44 2 40 97 57 55.
Gesperrt
Floflobel
Nachrichten: 135
Anmeldung: 15. Oktober 2015 - 17:32 Uhr

17. Mai 2016 - 16:32 Uhr

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,
Benutzeravatar
Sfonteneau
WAPT-Experte
Nachrichten: 2322
Registriert: 10. Juli 2014 - 23:52 Uhr
Kontakt:

17. Mai 2016 - 23:09 Uhr

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
Floflobel
Nachrichten: 135
Anmeldung: 15. Oktober 2015 - 17:32 Uhr

18. Mai 2016 - 10:24 Uhr

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.
Benutzeravatar
Sfonteneau
WAPT-Experte
Nachrichten: 2322
Registriert: 10. Juli 2014 - 23:52 Uhr
Kontakt:

18. Mai 2016 - 11:12 Uhr

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
Floflobel
Nachrichten: 135
Anmeldung: 15. Oktober 2015 - 17:32 Uhr

18. Mai 2016 - 11:44 Uhr

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,
Benutzeravatar
Sfonteneau
WAPT-Experte
Nachrichten: 2322
Registriert: 10. Juli 2014 - 23:52 Uhr
Kontakt:

18. Mai 2016 - 12:03 Uhr

Ä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...
Floflobel
Nachrichten: 135
Anmeldung: 15. Oktober 2015 - 17:32 Uhr

18. Mai 2016 - 12:26 Uhr

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.
Benutzeravatar
Sfonteneau
WAPT-Experte
Nachrichten: 2322
Registriert: 10. Juli 2014 - 23:52 Uhr
Kontakt:

18. Mai 2016 - 13:14 Uhr

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?
Floflobel
Nachrichten: 135
Anmeldung: 15. Oktober 2015 - 17:32 Uhr

18. Mai 2016 - 16:13 Uhr

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?
Benutzeravatar
Sfonteneau
WAPT-Experte
Nachrichten: 2322
Registriert: 10. Juli 2014 - 23:52 Uhr
Kontakt:

18. Mai 2016 - 17:07 Uhr

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
Gesperrt