[GELÖST] Die Syntax für den Dateinamen... ist falsch

Teilen Sie hier Ihre Tipps oder Probleme bezüglich der WAPT-Konsole oder des WAPT-Agenten mit
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.
Mitarbeiter
Nachrichten: 79
Anmeldung: 15. Januar 2018 – 20:59 Uhr

25. September 2018 – 15:38 Uhr

Hallo,

Ich habe ein Paket zur Installation der Surfer 11-Software erstellt. In diesem Paket habe ich auch die Option programmiert, alte Versionen vor der Installation der neuen Version zu deinstallieren.

Nach der Ausführung auf dem Client zeigt die Befehlsausgabe den folgenden Fehler an:

Code: Alle auswählen

Uninstalling old versions of surfer...
CalledProcessErrorOutput: Command [u'"C:\\ProgramData\\{5F3A4BBA-1519-45F2-9BF7-1E9924E32CAA}\\Surfer(11.1.719)_Installer.exe" REMOVE=TRUE MODIFY=FALSE'] returned non-zero exit status 1.
The syntax for the file name, directory name, or volume label is incorrect.
Paket:

Code: Alle auswählen

# -*- coding: utf-8 -*-
from setuphelpers import *
import os

uninstallkey = []

destdir = makepath(programfiles, "Golden Software", "Surfer 11", "AppData")
filedir = "%s\\Gradient.ini" % destdir

def install():
    print('Uninstalling old versions of surfer...')
    for soft in installed_softwares('Surfer'):
        try:
            run(WAPT.uninstall_cmd(soft['key']))
        except ValueError:
            print('An error occured on Surfer unninstalling!')
    print('Uninstalling old versions of Surfer completed!')
    print('installing Surfer')
    install_msi_if_needed('surfer.msi')
    if os.path.exists(destdir):
        filecopyto("Gradient.ini", destdir)
    if os.path.exists(filedir):
        print("Gradient.ini copiado para %s" % destdir)
Benutzeravatar
htouvet
WAPT-Experte
Nachrichten: 436
Anmeldung: 16. März 2015 - 10:48 Uhr
Kontakt:

25. September 2018 – 15:46 Uhr

Hallo,
Es sieht so aus, als ob uninstall_cmd eine Liste zurückgibt, die nicht korrekt aufgeteilt ist.
Der Befehl `run` kann entweder eine Liste oder einen String als erstes Argument entgegennehmen. Im Falle einer Liste muss das erste Element die ausführbare Datei sein, die folgenden Elemente sind die Argumente des Befehls.
Wenn Sie also [u'"C:\\ProgramData\\{5F3A4BBA-1519-45F2-9BF7-1E9924E32CAA}\\Surfer(11.1.719)_Installer.exe" REMOVE=TRUE MODIFY=FALSE'] als Rückgabewert von uninstall_cmd erhalten (d. h. eine Liste mit nur einem Element), besteht eine mögliche Lösung darin, das erste Argument als cmd zu verwenden

Code: Alle auswählen

# -*- coding: utf-8 -*-
from setuphelpers import *
import os

uninstallkey = []

destdir = makepath(programfiles, "Golden Software", "Surfer 11", "AppData")
filedir = "%s\\Gradient.ini" % destdir

def install():
    print('Uninstalling old versions of surfer...')
    for soft in installed_softwares('Surfer'):
        try:
            cmd = WAPT.uninstall_cmd(soft['key'])
            if isinstance(cmd,list) and len(cmd) == 1:
                cmd = cmd[0]
            run(cmd)
        except ValueError:
            print('An error occured on Surfer unninstalling!')
    print('Uninstalling old versions of Surfer completed!')
    print('installing Surfer')
    install_msi_if_needed('surfer.msi')
    if os.path.exists(destdir):
        filecopyto("Gradient.ini", destdir)
    if os.path.exists(filedir):
        print("Gradient.ini copiado para %s" % destdir)
Ruhige IT
Mitarbeiter
Nachrichten: 79
Anmeldung: 15. Januar 2018 – 20:59 Uhr

25. September 2018 – 17:05 Uhr

Hallo htouvet, danke für die Antwort!!!

Ich habe die Änderung vorgenommen, aber es ist ein Timeout-Fehler aufgetreten.

Ich habe einen Test an der Hand mit dem unten stehenden Befehl durchgeführt und ihn stillschweigend entfernt.

Code: Alle auswählen

C:\ProgramData\{5F3A4BBA-1519-45F2-9BF7-1E9924E32CAA}>"Surfer(11.1.719)_Installer.exe" REMOVE=TRUE SILENT=TRUE MODIFY=FALSE
Wie kann ich die Option SILENT=TRUE als Argument übergeben?
Benutzeravatar
htouvet
WAPT-Experte
Nachrichten: 436
Anmeldung: 16. März 2015 - 10:48 Uhr
Kontakt:

25. September 2018 – 17:18 Uhr

Füge es einfach dem Befehl hinzu...

Code: Alle auswählen

# -*- coding: utf-8 -*-
from setuphelpers import *
import os

uninstallkey = []

destdir = makepath(programfiles, "Golden Software", "Surfer 11", "AppData")
filedir = "%s\\Gradient.ini" % destdir

def install():
    print('Uninstalling old versions of surfer...')
    for soft in installed_softwares('Surfer'):
        try:
            cmd = WAPT.uninstall_cmd(soft['key'])
            if isinstance(cmd,list) and len(cmd) == 1:
                cmd = cmd[0]
            if not 'SILENT=TRUE' in cmd:
                cmd = cmd + ' SILENT=TRUE'
            run(cmd)
        except ValueError:
            print('An error occured on Surfer unninstalling!')
    print('Uninstalling old versions of Surfer completed!')
    print('installing Surfer')
    install_msi_if_needed('surfer.msi')
    if os.path.exists(destdir):
        filecopyto("Gradient.ini", destdir)
    if os.path.exists(filedir):
        print("Gradient.ini copiado para %s" % destdir)
Ruhige IT
Mitarbeiter
Nachrichten: 79
Anmeldung: 15. Januar 2018 – 20:59 Uhr

25. September 2018 – 17:51 Uhr

Cool!!

Wenn ich den Befehl jedoch manuell über die Eingabeaufforderung ausführe:

Code: Alle auswählen

C:\ProgramData\{5F3A4BBA-1519-45F2-9BF7-1E9924E32CAA}>"Surfer(11.1.719)_Installer.exe" REMOVE=TRUE MODIFY=FALSE SILENT=TRUE
wird sehr schnell entfernt.

Beim Ausführen des Skripts tritt ein Timeout-Fehler auf. Ich habe testweise ein Timeout von 180 Sekunden konfiguriert.

Code: Alle auswählen

Uninstalling old versions of surfer...
TimeoutExpired: Command '"C:\ProgramData\{5F3A4BBA-1519-45F2-9BF7-1E9924E32CAA}\Surfer(11.1.719)_Installer.exe" REMOVE=TRUE MODIFY=FALSE SILENT=TRUE' timed out after 180 seconds with output ''''
Stimmt etwas mit meinem Skript nicht?
Benutzeravatar
dcardon
WAPT-Experte
Nachrichten: 1955
Anmeldung: 18. Juni 2014 - 09:58 Uhr
Ort: Saint Sébastien sur Loire
Kontakt:

26. September 2018 – 13:05 Uhr

Hallo Elias,
embilly schrieb: 25. September 2018 - 17:51 Uhr Wenn ich den Befehl jedoch manuell über die Eingabeaufforderung ausführe:

Code: Alle auswählen

C:\ProgramData\{5F3A4BBA-1519-45F2-9BF7-1E9924E32CAA}>"Surfer(11.1.719)_Installer.exe" REMOVE=TRUE MODIFY=FALSE SILENT=TRUE
wird sehr schnell entfernt.

Beim Ausführen des Skripts tritt ein Timeout-Fehler auf. Ich habe testweise ein Timeout von 180 Sekunden konfiguriert.

Code: Alle auswählen

Uninstalling old versions of surfer...
TimeoutExpired: Command '"C:\ProgramData\{5F3A4BBA-1519-45F2-9BF7-1E9924E32CAA}\Surfer(11.1.719)_Installer.exe" REMOVE=TRUE MODIFY=FALSE SILENT=TRUE' timed out after 180 seconds with output ''''
Stimmt etwas mit meinem Skript nicht?
Tritt dieses Verhalten auf, wenn Sie das Skript in PyScripter oder über WAPTService ausführen? Falls es über PyScripter funktioniert, liegt das Problem möglicherweise darin, dass der Befehl im Kontext „Lokales System“ ausgeführt wird (WaptService läuft als „Lokales System“).

Prost,

Denis
Denis Cardon – Tranquil IT
Teilen Sie Ihre Erfahrungen auf WAPT! Senden Sie uns Ihre Blog- und Artikel-URLs im „Ihre Meinung des Forums, und wir werden sie auf der WAPT-
Mitarbeiter
Nachrichten: 79
Anmeldung: 15. Januar 2018 – 20:59 Uhr

26. September 2018 – 14:17 Uhr

Tritt dieses Verhalten auf, wenn Sie das Skript in PyScripter oder über WAPTService ausführen? Falls es über PyScripter funktioniert, liegt das Problem möglicherweise darin, dass der Befehl im Kontext „Lokales System“ ausgeführt wird (WaptService läuft als „Lokales System“).
Ich nutze WAPTService.

Gibt es eine Möglichkeit, dieses Problem zu beheben?
Benutzeravatar
dcardon
WAPT-Experte
Nachrichten: 1955
Anmeldung: 18. Juni 2014 - 09:58 Uhr
Ort: Saint Sébastien sur Loire
Kontakt:

26. September 2018 – 15:16 Uhr

Hallo Empbilly,
embilly schrieb: 26. September 2018 - 14:17 Uhr
Tritt dieses Verhalten auf, wenn Sie das Skript in PyScripter oder über WAPTService ausführen? Falls es über PyScripter funktioniert, liegt das Problem möglicherweise darin, dass der Befehl im Kontext „Lokales System“ ausgeführt wird (WaptService läuft als „Lokales System“).
Ich nutze WAPTService.

Gibt es eine Möglichkeit, dieses Problem zu beheben?
Sie sollten versuchen, die Deinstallationsdatei im Kontext des lokalen Systems auszuführen. Dazu können Sie tis-ms-pstools installieren und ausführen

Code: Alle auswählen

psexec -i -s cmd.exe
Um eine Shell als „lokales System“ zu erhalten, können Sie Folgendes verwenden:

Code: Alle auswählen

whoami
Um zu überprüfen, ob Sie tatsächlich als SYSTEM angemeldet sind, führen Sie anschließend die Deinstallationsdatei aus.
Wenn das funktioniert, können Sie dann versuchen, pyscripter als "lokales System" zu starten und prüfen, ob die Paketinstallation auf die gleiche Weise abläuft wie in Ihrem Benutzerkontext.

Prost,

Denis
Denis Cardon – Tranquil IT
Teilen Sie Ihre Erfahrungen auf WAPT! Senden Sie uns Ihre Blog- und Artikel-URLs im „Ihre Meinung des Forums, und wir werden sie auf der WAPT-
Mitarbeiter
Nachrichten: 79
Anmeldung: 15. Januar 2018 – 20:59 Uhr

26. September 2018 – 18:53 Uhr

dcardon,

Wie kann ich "psexec ..." in das obige Skript einfügen?
Benutzeravatar
dcardon
WAPT-Experte
Nachrichten: 1955
Anmeldung: 18. Juni 2014 - 09:58 Uhr
Ort: Saint Sébastien sur Loire
Kontakt:

26. September 2018 – 19:44 Uhr

Hallo Elias,
embilly schrieb: 26. Sep. 2018 - 18:53 Uhr dcardon,

Wie kann ich "psexec ..." in das obige Skript einfügen?
Sie müssen psexec nicht in setup.py einbinden. Mit Psexec können Sie eine Sitzung als „Lokales System“ starten und überprüfen, ob sich das Verhalten bei der Installation und Deinstallation von Software ändert.
Sie sollten cmd.exe einfach als Administrator mit erhöhten Rechten öffnen (Sie können dies überprüfen mit
whoami /groups
dass Sie das Sicherheitstoken S-1-16-12288 am Ende der Liste haben). Dann geben Sie Folgendes ein:
psexec -i -s cmd.exe
Sie sollten nun eine weitere Eingabeaufforderung erhalten. In dieser Eingabeaufforderung können Sie Folgendes eingeben:
wer bin ich?
Um sicherzustellen, dass Sie sich tatsächlich im "Lokalen System"-Modus befinden, können Sie anschließend testen, ob sich die Deinstallationsdatei (EXE) in diesem Kontext korrekt verhält.

Prost,

Denis
Denis Cardon – Tranquil IT
Teilen Sie Ihre Erfahrungen auf WAPT! Senden Sie uns Ihre Blog- und Artikel-URLs im „Ihre Meinung des Forums, und wir werden sie auf der WAPT-
Gesperrt