Seite 1 von 1

[GELÖST] killalltasks beendet keine laufenden Prozesse

Veröffentlicht: 15. Februar 2023 – 17:21 Uhr
von brice73
Guten Morgen,

Ich habe ein Problem mit der Funktion killalltasks was verhindert, dass Prozesse während einer Paketinstallation beendet werden.

In der Funktion `def install()` eines portablen Softwarepakets (Phyloboite.exe) wird die ausführbare Datei der Anwendung mit folgendem Befehl gestartet:

Code: Alle auswählen

run('C:\AppsPortables\Phyloboite\Phyloboite.exe')
Die Anwendung startet (im Kompatibilitätsmodus für Windows XP Service Pack 3, wie vom Kompatibilitätsassistenten empfohlen) und das Installationsskript wird fortgesetzt. Der Befehl `killalltasks` (innerhalb von `def install()`) kann die Anwendung jedoch nicht beenden. Außerdem gibt die Funktion `isrunning`, die auf die einzelnen Aufgaben angewendet wird, nicht „True“ zurück.

Die globale Variable taskstokill ist in setup.py wie folgt definiert:

Code: Alle auswählen

taskstokill= ['Phyloboite.exe','_Phylo00.exe']
und die Funktion killalltasks wird folgendermaßen aufgerufen:

Code: Alle auswählen

killalltasks(taskstokill,include_children=True)

Beim Öffnen des Task-Managers wird jedoch deutlich, dass die beiden Prozesse 'Phyloboite.exe' und '_Phylo00.exe' ausgeführt werden. Durch manuelles Öffnen eines DOS-Eingabeaufforderungsfensters ist es möglich, diese beiden Prozesse manuell zu beenden.

Das Problem könnte mit dem Kompatibilitätsmodus zusammenhängen, der die Installation im Vollbildmodus startet und dazu führt, dass man die Kontrolle über alles andere verliert (Taskleiste, Startmenü usw.)?

WAPT Enterprise 2.3.0.13505
WAPT-Server unter Ubuntu 20.04
Paketverwaltung/Paketerstellung unter Windows 10

Betreff: killalltasks beendet laufende Aufgaben nicht

Veröffentlicht: 16. Februar 2023 – 18:07 Uhr
von dcardon
Hallo Brice,

um das Problem besser einzugrenzen:
* Könntest du versuchen, den Prozess mit PyScripter zu beenden, um zu prüfen, ob es an einem Kontextproblem liegt?
* Könntest du versuchen, den Prozess über die Kommandozeile mit `taskkill /f /im myprogram.exe` zu ​​beenden?

Danke,

Denis

Betreff: killalltasks beendet laufende Aufgaben nicht

Veröffentlicht: 17. Februar 2023 – 13:13 Uhr
von brice73
Hallo Denis,

Das Programm Phyloboite.exe startet beim Ausführen den Prozess _Phylo00.exe. Ich kann beide Prozesse beenden, indem ich den Kindprozess _Phylo00.exe entweder über die Eingabeaufforderung oder im PyScripter-Befehlszeileninterpreter mit dem Befehl `killalltasks` beende. (Dazu muss ich jedoch den Task-Manager öffnen, den Prozess minimieren, da er nach dem Start den gesamten Bildschirm und nicht nur ein Fenster einnimmt, und anschließend die Eingabeaufforderung oder PyScripter öffnen.).

Das Hauptproblem besteht darin, dass die portable Anwendung, die ich bereitstellen möchte (Phyloboite.exe), Administratorrechte benötigt. Um dies zu beheben, habe ich in der install()-Funktion einen Registrierungsschlüssel erstellt, sodass alle Benutzer die Anwendung mit Administratorrechten und im Kompatibilitätsmodus mit Windows XP SP3 ausführen können

Code: Alle auswählen

registry_setstring(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers","C:\AppsPortables\Phyloboite\Phyloboite.exe","~ RUNASADMIN WINXPSP3 RUNASINVOKER", type=REG_SZ)
Das Problem besteht darin, dass trotz dieser Vorgehensweise, sobald die Anwendung auf den Arbeitsstationen bereitgestellt ist, die Anwendung tatsächlich einmal mit einem Administratorkonto geöffnet werden muss, bevor die Benutzer die Anwendung selbst mit Administratorrechten starten können.

Um das UAC-Problem zu umgehen, wollte ich die Anwendung während der Installation öffnen und wieder schließen. Nach mehreren Versuchen und da `killalltasks` in `install()` nicht funktionierte, erstellte ich eine ausführbare Datei (aus einer .bat-Datei), die dies tut und während der Installation (innerhalb der `install()`-Funktion) gestartet wird. Installations-/Deinstallationstests mit PyScripter zeigen keine Probleme; die Anwendung öffnet sich für einige Sekunden (3), schließt sich dann und die Installation wird abgeschlossen. Nach einem Praxistest mit heruntergefahrenen Rechnern schlägt die Installation der Anwendung jedoch fehl und scheint endlos zu laufen.

Haben Sie eine Lösung für das Problem, dass eine portable Anwendung Administratorrechte zum Starten benötigt?

PS1: Zur Information: Die .bat-Datei, aus der die .exe-Datei erstellt wird, enthält die folgenden Befehle:

Code: Alle auswählen

start C:\AppsPortables\Phyloboite\Phyloboite.exe && timeout /t 3 && taskkill /f /im "_Phylo00.exe"


(PS2: Eine weitere interessante Tatsache ist, dass die Funktion killalltasks tatsächlich den Prozess _Phylo00.exe beendet, der während der Deinstallation läuft, wenn die Funktion uninstall() aufgerufen wird).



Vielen Dank im Voraus

Betreff: killalltasks beendet laufende Aufgaben nicht

Veröffentlicht: 17. Februar 2023 – 14:27 Uhr
von dcardon
Hallo Brice,

Ich habe keine Antwort auf Ihr Problem, aber als möglichen Ansatzpunkt für die Untersuchung sollten Sie versuchen, es in einem lokalen SYSTEM-Konto zu installieren, das vom WAPT-Agenten auf dem Rechner verwendet wird, um zu sehen, wie es sich verhält.

Um den Test durchzuführen, können Sie das Paket tis-sysinternals-pstools installieren und ausführen

Code: Alle auswählen

psexec -s -i cmd.exe


Führen Sie anschließend die Installation in dieser cmd.exe durch. Ein wesentlicher Unterschied zwischen dem lokalen Administratorkonto und dem lokalen Systemkonto besteht darin, dass das lokale Systemkonto keinen Standarddesktop besitzt. Dies kann dazu führen, dass fehlerhaft programmierte Installationsprogramme/Software nicht ordnungsgemäß funktionieren.

Bezüglich des Problems des Startens als Administrator rate ich Ihnen, mithilfe eines Prozess-Explorers oder eines gleichwertigen Tools zu überprüfen, welche Dateien für die betreffende Software tatsächlich Lese- und Schreibzugriff benötigen, und die korrekten Zugriffskontrolllisten (ACLs) für die entsprechenden Dateien/Verzeichnisse/Registrierungsschlüssel festzulegen.

Aufrichtig,

Denis

Betreff: killalltasks beendet laufende Aufgaben nicht

Veröffentlicht: 17. Februar 2023 – 14:44 Uhr
von brice73
Hallo Denis,

vielen Dank für Ihren Hinweis, dem ich nachgehen werde.

Beim Testen einer anderen Anwendung auf dem Testrechner ist mir aufgefallen, dass der WAPT-Agent während der Installation der Phyloboite-Anwendung nicht heruntergefahren wurde (ich habe den Vorgang nach etwa zehn Minuten abgebrochen, da das Paket weniger als 10 MB groß war). Die Anwendung scheint jedoch korrekt installiert worden zu sein, und ich konnte sie direkt mit dem aktuellen Benutzerkonto starten. Das Paket wird aber weiterhin als fehlerhaft angezeigt bzw. muss installiert werden. Der WAPT-Agent fährt auch beim Herunterfahren des Rechners während der Installation nicht herunter. Daher funktioniert die Installation und Bereitstellung nicht.

Viele Grüße,

Betreff: killalltasks beendet laufende Aufgaben nicht

Veröffentlicht: 17. Februar 2023 – 16:27 Uhr
von dcardon
Hallo Brice,

die Funktion `run()` hat ein Timeout. Das bedeutet, dass nach einer gewissen Zeit alle gestarteten Prozesse beendet und ein Fehlercode zurückgegeben wird.

Viele Grüße,

Denis

Betreff: killalltasks beendet laufende Aufgaben nicht

Veröffentlicht: 23. Februar 2023 – 18:07 Uhr
von brice73
Schließlich funktionierte die Paketinstallation; die .exe-Datei öffnete und schloss die Anwendung während der Installation, wodurch das UAC-Problem behoben wurde. :) Das Problem bei der Paketinstallation könnte auf eine langsame Netzwerkverbindung auf einem der Testrechner zurückzuführen sein. Die Software wurde erfolgreich auf zahlreichen Rechnern bereitgestellt, und die wenigen Installationsfehler ließen sich durch einen Neustart des Programms problemlos beheben.

Betreff: killalltasks beendet laufende Aufgaben nicht

Veröffentlicht: 24. Februar 2023 - 09:42 Uhr
von dcardon
Hallo Brice,

vielen Dank für das Feedback. Bezüglich der Netzwerkprobleme: Meinen Sie, dass das Installationsprogramm eine Netzwerkverbindung herstellt, um die Installation abzuschließen? Um solche Probleme zu vermeiden, empfiehlt es sich, in sich abgeschlossene WAPT-Pakete zu verwenden (d. h. alle benötigten Komponenten im Paket enthalten). Der WAPT-Agent lädt die Pakete herunter, speichert sie tagsüber (alle 1,5 Stunden) im Cache und installiert sie beim Herunterfahren des Rechners oder auf Anfrage. Dadurch werden Netzwerkprobleme während der Installation verhindert.

Ich markiere das Thema als gelöst.

Viele Grüße,

Denis

Re: [GELÖST] killalltasks beendet laufende Prozesse nicht

Veröffentlicht: 26. Februar 2023 – 14:30 Uhr
von brice73
Hallo Denis,
zunächst hatte ich beim Client-Update die Option zum Herunterladen des Pakets nicht aktiviert, und der Testrechner hatte eine sehr langsame Netzwerkverbindung. Die ersten Installationsversuche schlugen fehl. Nachdem ich das Herunterladen des Pakets aktiviert und das Timeout (für die aus der Batchdatei erstellte .exe-Datei) erhöht hatte, funktionierte die Installation auf einem anderen Rechner.
Viele Grüße,