Seite 1 von 1

[GELÖST] run_nofatal() wird nie beendet

Veröffentlicht: 7. Juni 2024 - 17:58 Uhr
von sebastien4444
Hallo,

ich habe ein kleines Problem mit dieser Funktion.

Ich muss eine Datei aus einer .exe-Datei installieren, für die ich den Parameter `/verysilent` für die unbeaufsichtigte Installation angeben muss.
Da die Funktion `install_exe_if_needed` scheinbar keine Parameter (wie `install_msi_if_needed` mit Eigenschaften) zulässt, verwende ich `run_as_administrator(myfile.exe, params="/verysilent")`.

Anschließend muss ich Dateien in das Installationsverzeichnis kopieren, daher muss die Installation abgeschlossen sein, damit der Kopierpfad existiert. Deshalb verwende ich `wait_uninstallkey_present()` mit dem Deinstallationsschlüssel.

Schließlich muss ich eine .exe-Datei im Installationsverzeichnis starten, um den Dienst auf dem PC zu starten.
Da diese .exe-Datei keinen Exit-Code zurückgibt, verwende ich `run_nofatal()`, um einen Fehler zu vermeiden.

Mein Problem ist, dass meine .exe-Datei korrekt ausgeführt wird, da der Dienst auf meinem Rechner erscheint, aber die Ausgabe `print("starting OK")`, die ich direkt danach hinzufüge, wird nie angezeigt. Daher wird die Installation nie abgeschlossen.

Ist es nicht gerade der Zweck dieser Funktion, ausgeführt zu werden und zu beenden, ohne auf irgendetwas zu warten?

Re: run_nofatal() wird nie beendet

Veröffentlicht: 7. Juni 2024 – 18:22 Uhr
von Sfonteneau
sebastien4444 schrieb: 7. Juni 2024 - 17:58 Uhr Da die Funktion install_exe_if_needed das Hinzufügen von Parametern scheinbar nicht zulässt (wie es die Funktion install_msi_if_needed mit Eigenschaften tut), verwende ich run_as_administrator(myfile.exe, params="/verysilent").
Sie können Ihre setup.py-Datei senden; das ist einfacher

und falls install_exe_if_need das Hinzufügen eines Arguments mit silentflags erlaubt:

Beispiel mit VLC:

Code: Alle auswählen

    install_exe_if_needed("vlcsetup.exe",silentflags="/S",key="VLC media player",min_version="3.0.20")

run_as_administrator sollte in Paketen nicht verwendet werden, da wapt ein Systemkonto startet und daher unnötig ist.
Verwenden Sie einfach den Befehl „run“

Re: run_nofatal() wird nie beendet

Veröffentlicht: 10. Juni 2024 - 11:25 Uhr
von sebastien4444
Hallo,

vielen Dank für Ihr Feedback.

Tatsächlich ist mir während der Installation der Parameter für die automatische Ausführung in `install_exe_if_needed` nicht aufgefallen. :Hoppla:

Das löst jedoch nicht mein Problem mit dem Starten der .exe-Datei. :?

Wenn ich `run()` anstelle von `run_as_administrator()` verwende, startet mein Dienst zwar (genau wie bei `run_nofatal`), aber die Skriptausführung bleibt an dieser Stelle hängen und wird daher nicht abgeschlossen. (Wenn ich das Paket also unverändert erstelle und auf einem PC bereitstelle, wird die Installation nie abgeschlossen.)

Vielen Dank im Voraus für Ihre Hilfe.

Re: run_nofatal() wird nie beendet

Veröffentlicht: 10. Juni 2024 - 11:46 Uhr
von Sfonteneau
Sie können Ihre setup.py-Datei senden; das ist einfacher ;)

Re: run_nofatal() wird nie beendet

Veröffentlicht: 11. Juni 2024 - 09:44 Uhr
von sebastien4444
Guten Morgen,

So sieht es aus:

Code: Alle auswählen

from setuphelpers import *

def install():
    install_exe = "UltraVNC Installer.exe"
    config_file = "ultravnc.ini"
    install_path = makepath("C:","Program Files","uvnc bvba","UltraVNC")
    service_path = makepath("C:","Program Files","uvnc bvba","UltraVNC","winvnc.exe")
    
    install_exe_if_needed(install_exe, , silentflags="/verysilent", key="Ultravnc2_is1")
   
    print("VNC installé")
   
    filecopyto(config_file, install_path)

    print("Config copiée")

    run(service_path)
    
    print("Service lancé")
Die Software installiert sich, die Konfigurationsdatei wird korrekt kopiert, der Dienst startet korrekt, aber die Ausgabe "Service started" wird nie erreicht und das Skript wird erst nach dem Timeout beendet (und daher mit einem Fehler).

Re: run_nofatal() wird nie beendet

Veröffentlicht: 13. Juni 2024 - 11:29 Uhr
von dcardon
Hallo Sébastien,

es ist sehr wahrscheinlich, dass die Ausführung von „winvnc.exe“ nicht die Kontrolle zurückgibt (es läuft also nicht als Dienst), und daher gibt die Funktion `run()` keine Kontrolle zurück. Nach dem Timeout wird die ausführbare Datei „winvnc.exe“ beendet, und das Paket stößt auf einen Fehler.

Es gibt vermutlich eine Möglichkeit, winvnc als Dienst zu deklarieren und entsprechend auszuführen, um dieses Problem zu vermeiden.

Viele Grüße,

Denis

Re: run_nofatal() wird nie beendet

Veröffentlicht: 14. Juni 2024 - 11:46 Uhr
von sebastien4444
Hallo,

vielen Dank für Ihre Antwort.

Ja, genau das ist es: Sobald der Fehler auftritt, stoppt das Programm.

Ich habe verschiedene Python-Funktionen aus unterschiedlichen Bibliotheken ausprobiert, die die Ausführung von Dateien ermöglichen, aber das ändert nichts.

Seltsamerweise tritt das Problem nicht auf, wenn ich winvnc.exe über die Eingabeaufforderung starte: Das Programm startet, die Eingabeaufforderung erscheint fast sofort, und das Programm läuft weiter.
Ich dachte, Ausführungsfunktionen in Python wären dasselbe wie das Starten eines CMD-Befehls.

Na ja, ich versuche es anders. Nochmals vielen Dank.

Re: run_nofatal() wird nie beendet

Veröffentlicht: 14. Juni 2024 - 12:35 Uhr
von dcardon
Hallo Sébastien,

hast du dir schon das Paket in unserem Store angesehen

: https://wapt.tranquil.it/store/en/detai ... _PROD.wapt?

Wenn du es als Dienst ausführen möchtest, ist das die beste Methode.

Falls du hingegen das Verhalten eines im Hintergrund ausgeführten Befehls nachbilden möchtest, kannst du dir den Befehl „start“ in der Kommandozeile ansehen.

Viele Grüße,

Denis

Re: run_nofatal() wird nie beendet

Veröffentlicht: 14. Juni 2024 - 15:50 Uhr
von sebastien4444
Super, danke!

Beim Blick in die setup.py-Datei Ihres Pakets habe ich gesehen, dass ich den Parameter "-install" zur Ausführung von winvnc.exe hinzufügen musste (was eigentlich in der UltraVNC-Dokumentation "Command Line" steht, aber ich hatte es übersehen :? ).

Re: run_nofatal() wird nie beendet

Veröffentlicht: 17. Juni 2024 - 09:49 Uhr
von dcardon
Hallo Sébastien,

vielen Dank für dein Feedback :-) . Schön, dass du eine Lösung gefunden hast.

Erzähl ruhig weiter von WAPT; es verbreitet sich auch durch Mundpropaganda sehr gut :-) !

Beste Grüße,

Denis