#1
|
|||
|
|||
Ereignis-Skript funzt unmittelbar nach einem Update nicht mehr
Ich habe mir ein Ereignis-Skript geschrieben, das den Ruhezustand am PC einleitet, wenn alle Downloads und Entpackungsvorgänge abgeschlossen sind - das funktioniert auch problemlos, allerdings NICHT, wenn es nach dem Klicken des Icons "Auf Aktualisierungen überprüfen (Str+u)" für den "JDownloader2" ein Update gegeben hat, welches automatisch einen Neustart des "JDownloader2" durchführt: ist das Update abgeschlossen, muss man manuell einen weiteren Neustart des "JDownloader2" anstoßen, damit das Ereignis-Skript wieder funktioniert!
Hier das Ereignis-Skript: //alle verbliebenen Downloads überprüfen do { links = callAPI("downloadsV2", "queryLinks", { "name": true }); entpackend = false; for (i = 0; i < links.length; i++) { //konvertiere API-Link in ein Link-Objekt link = getDownloadLinkByUUID(links[i].uuid); //überprüfen, ob gerade ein Archiv entpackt wird if (link.getExtractionStatus() == "RUNNING") { entpackend = true; break; } } //Vorbereitung des Ruhezustandes verzögern, solange noch nicht alle Entpackungsvorgänge abgeschlossen sind } while (entpackend) callSync("D:\\GroundControl\\gc.exe", "/r", "D:\\PCzapper\\mediamanager\\Scripts\\PC-Ruhezustand.gc", "/var:%Fenstertitel=JDownloader 2", "/var:%Modus=2"); Bevor jetzt jemand sagt "Nutze doch einfach die Erweiterung "JD Shutdown"": das kommt für mich nicht in Betracht, da ich noch weitere Bedingungen abfrage, die bei Erfüllung ggf. den Ruhezustand verhindern sollen. Kurz noch zur Erläuterung: der callSync-Befehl ruft ein externes Makro auf, das eben diese Bedingungen abfragt. Hat jemand eine Idee, warum das Ereignis-Skript in der eingangs beschriebenen Situation nicht aufgerufen wird? (Dass es nicht aufgerufen wird, erkenne ich daran: Wenn das externe Makro gestartet wird, erscheint ein eigenes Icon in der Taskleiste des PCs - hier bleibt es aber aus) |
#2
|
||||
|
||||
Dein Script sollte auf jeden Fall eine Sleep/Wait nutzen. Denn ansonsten rennst du in Endlos-Schleife durch die Liste
Ist zu dem Zeitpunkt wenn das Update installiert wird und JDownloader neugestartet wird ein Entpackvorgang am laufen? Evtl mal zum Test ein Script welches einen Alert zum Dialog anzeigen und schauen ob das klappt?
__________________
JD-Dev & Server-Admin |
#3
|
|||
|
|||
@Jiaz:
Ich hatte vergessen zu erwähnen, dass ich als Trigger für das Ereignis-Skript "Download-Controller gestoppt" eingestellt habe: Somit wird es also nicht unentwegt, sondern eben genau nur bei diesem Ereignis ausgelöst; die Befehle habe ich zum Teil Eurem mitgegebenen Beispiel-Skript "Sounddatei (.wav) wiedergeben, wenn Downloads und Entpackung beendet sind" entliehen. Zu Deiner Frage: Ist zu dem Zeitpunkt wenn das Update installiert wird und JDownloader neugestartet wird ein Entpackvorgang am laufen? Antwort: Nein. Ich habe jetzt zum Testen mal in das Ereignis-Skript am Anfang den Befehl "playWavAudio(JD_HOME + "/themes/standard/org/jdownloader/sounds/captcha.wav");" eingefügt. Heute gab es ja wieder ein Update mit einem automatischen Neustart, und dieses Mal hat das Skript wieder gefunzt - ja, neh, is klar, natürlich der "Vorführeffekt" :-) Ich bin mir aber sicher, dass die "Nicht-Ausführung" sporadisch immer wieder mal auftritt, ich werde ab sofort bei zukünftigen Updates ganz bewußt lauschen, ob der Test-Ton stets zu hören ist, dann wissen wir mehr. Ich melde mich wieder! |
#4
|
||||
|
||||
Am besten statt einem Ton, besser einen Dialog, dann siehst du ob das Script gefruchtet hat. Ein Ton kann man verpassen/überhören.
__________________
JD-Dev & Server-Admin |
Thread Tools | |
Display Modes | |
|
|