Der PC schaltet sich ab, bevor die Skripte beendet sind

Fragen zu WAPT-Paketen / Anfragen und Hilfe bezüglich WAPT-Paketen.
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
Benutzeravatar
Wurzel
Nachrichten: 10
Anmeldung: 2. August 2017 – 14:05 Uhr

2. August 2017 - 14:23 Uhr

Guten Morgen,
Ich verwende ein Python-Skript, um andere Skripte (oft Batch- oder PS1-Dateien) zu starten.
In meinem Paket endet setup.py mit folgender Anweisung:

Code: Alle auswählen

os.system("cd C:\dossier0\dossier1 && start setup.bat")
In meinem Bat-Menü starte ich Befehle wmic (Deinstallation) und ich nutze andere Funktionen, deren Ausführung einige Zeit in Anspruch nehmen kann.

Meine Frage lautet: Wie kann ich verhindern, dass Wapt den Computer herunterfährt, bevor der Batch-Prozess abgeschlossen ist? Wie kann ich Wapt mitteilen, dass der Auftrag noch nicht beendet ist und dass es warten muss, bevor es herunterfährt?

Ich habe überlegt, `time.sleep(10)` zu verwenden... aber nun ja, das ist nicht sehr... elegant :ugeek: Darüber hinaus benötigt das Skript auf den verschiedenen Rechnern unterschiedlich viel Zeit.

Übrigens:
Ich entdeckte WAPT während meines Studiums bei der Suche nach Deployment-Software; ich nutze es auf meinem privaten Computer und seit diesem Jahr auch in der Firma, in der ich arbeite! Es ist ein hervorragendes Produkt.
Ich möchte außerdem wissen, wo ich Probleme im Zusammenhang mit meinen Paketen oder meiner Nutzung melden kann.

Nachtrag: Ups, falsches Forum
Benutzeravatar
agauvrit
WAPT-Experte
Nachrichten: 238
Anmeldung: 17. November 2016 - 10:25 Uhr
Ort: Nantes
Kontakt:

2. August 2017 – 17:20 Uhr

Thema verschoben.

Zu Ihrer Frage: https://www.wapt.fr/fr/doc/Frequent-pro ... tput-600-0

Ihre Funktion könnten Sie folgendermaßen schreiben:

Code: Alle auswählen

os.chdir(r"C:\dossier0\dossier1")
run("setup.bat",timeout=1200)
Gute Verpackungsentwicklung!
Benutzeravatar
Wurzel
Nachrichten: 10
Anmeldung: 2. August 2017 – 14:05 Uhr

3. August 2017 - 09:13 Uhr

agauvrit schrieb: 2. August 2017 - 17:20 Uhr Thema verschoben.

Zu Ihrer Frage: https://www.wapt.fr/fr/doc/Frequent-pro ... tput-600-0

Ihre Funktion könnten Sie folgendermaßen schreiben:

Code: Alle auswählen

os.chdir(r"C:\dossier0\dossier1")
run("setup.bat",timeout=1200)
Gute Verpackungsentwicklung!
Guten Morgen,
Danke für die Antwort. Ich werde Ihre Lösung im nächsten Update meines Pakets ausprobieren.

Ich überlege, die Stapelverarbeitung aufzugeben und mein Skript in Python neu zu schreiben, aber ich befürchte, dass ich auf dasselbe Problem stoßen werde, wenn ich mein Python-Skript mit Folgendem beende:
os.popen('wmic product where name="SoftwareName" call uninstall')
Guten Tag
swbsf
Nachrichten: 8
Anmeldung: 27. Juli 2017 - 09:50 Uhr

4. August 2017 - 10:25 Uhr

Hallo,
Ich nutze es erfolgreich:

Code: Alle auswählen

        cmd="c:\\Windows\\System32\\WindowsPowershell\\v1.0\\powershell.exe -NoProfile -NonInteractive -ExecutionPolicy Bypass -File c:\\tmp\\Win10.ps1"
        proc = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE)
        proc.wait()
Die Funktion `proc.wait()` funktioniert in meinem Fall einwandfrei, da sie den Rechner am Ende des Prozesses neu startet. Sie müssen natürlich `subprocess` importieren und `cmd` durch Ihren Befehl ersetzen.
Die Lösung timeout=xxx ist fehlerhaft; sie eignet sich ideal für.. Rennbedingungen.
Benutzeravatar
Wurzel
Nachrichten: 10
Anmeldung: 2. August 2017 – 14:05 Uhr

10. August 2017 - 11:43 Uhr

swbsf schrieb: 4. August 2017 - 10:25 Uhr Hallo,
Ich nutze es erfolgreich:

Code: Alle auswählen

        cmd="c:\\Windows\\System32\\WindowsPowershell\\v1.0\\powershell.exe -NoProfile -NonInteractive -ExecutionPolicy Bypass -File c:\\tmp\\Win10.ps1"
        proc = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE)
        proc.wait()
Die Funktion `proc.wait()` funktioniert in meinem Fall einwandfrei, da sie den Rechner am Ende des Prozesses neu startet. Sie müssen natürlich `subprocess` importieren und `cmd` durch Ihren Befehl ersetzen.
Die Lösung timeout=xxx ist fehlerhaft; sie eignet sich ideal für.. Rennbedingungen.
Danke, ich habe es mit proc.wait() ausprobiert und es funktioniert einwandfrei
Gesperrt