![]() |
Warten bis ein Programm beendet wird
Ich bin gerade in der Planungsphase für ein Programm, eine Art Multisetup, mit dem ich mehrere Programme in einem Rutsch installieren kann.
Meine Fragen an dem Punkt ist, wie ich die Programme nacheinander installieren kann. Ein Programm zu starten ist kein Problem, auch zu warten bis es beendet ist, so dass man das nächste Programm starten kann. Aber einige Setups haben nun mal so an sich, dass sie zwischendurch oder danach das OS neu starten. Ein Programm das im Hintergrund ein Setup-Programm überwacht, wird somit auch neu gestartet. Das Multisetup-Programm am laufen zu halten ist nicht das Problem, da gibt es Techniken, aber wie erkenne ich ob ein Setup nach OS Neustart weiter ausgeführt wird oder fertig war? |
AW: Warten bis ein Programm beendet wird
Tja, wenn ein Programm nach dem Neustart nochmal automatisch gestartet wird, dann gibt es dafür ganz bestimmt einen "AutoStartEintrag".
Entweder in den paar utoStart-Registrierungsstellen von Windows, oder irgendein Service wurde damit beauftragt. Jetzt muß man nur noch alle tausende mögliche Orte danach durchsuchen. |
AW: Warten bis ein Programm beendet wird
Zitat:
Mit einer guten Wahrscheinlichkeit? Indem du prüfst, ob das Setup Autostarteinträge unter RunOnce ablegt und nach dem Neustart ggf. nach dem zu startenden Programm suchst. // EDIT: @himitsu: Da stand aber eben noch was gaaanz anderes. Habs genau gesehen. :mrgreen: |
AW: Warten bis ein Programm beendet wird
Zitat:
Ich werte stattdessen den Rückgabewert des jeweiligen Setups aus und teile dem Nutzer mit, wenn er ungleich Null ist. Die Rückgabewerte sind natürlich spezifisch für die jeweiligen Installer, aber z.B. bei den Windows Updates und sonstigem Kram, der von MS stammt, steht 3010 für einen notwendigen Neustart. Wenn alle geplanten Setups durch sind, kann der Nutzer dann entscheiden (bzw. eigentlich schon bei der Auswahl der zu installierenden Programme), ob der Rechner neu gestartet werden soll oder nicht. Wenn der Nutzer ein Programm ohne den nötigen Neustart nutzen will, wird er schon merken, dass es nicht funktioniert, denn die meisten Programme sind so intelligent, dass sie selber nochmal prüfen, ob der Neustart (bzw. genaugenommen die notwendigen Aktionen zur Einrichtung der Software) durchgeführt wurden oder nicht. Diese Variante ist eigentlich universell einsetzbar, nur an einem Punkt scheitert sie: man will eine Reihe voneinander abhängiger (aufeinander aufbauender) Programme installieren und der/die erste(n) der Reihe verlangen einen Neustart. In einem solchen Fall muss der Nutzer nach dem Neustart meine Software nochmals ausführen, um den Rest nachzuziehen. Bislang ist mir das aber noch nicht untergekommen (Java, .NET, WinPcap, GhostScript sind ja allesamt ohne Neustart einsetzbar, sofern sie nicht gerade in Bentzung sind). MfG Dalai |
AW: Warten bis ein Programm beendet wird
Na ja, das soll auch eine Art Sorglos Paket sein, ein mal starten alles installieren. Da einem zu sagen er soll nicht neu starten, da kann ich der Person gleich sagen sie soll alle Programme nacheinander installieren.
Ich für mich entscheide auch individuell ob ein Neustart nötig ist, aber in der Regel hat es schon seine Berechtigung. Nur mal als Beispiel fallen mit die AllInOne Treiber Setups zu Mainbords, wo alle relevanten Treiber für sich oder als Paket installiert werden können, und diese starten das System in der Regel mehrmals. Und wenn die es können, werde ich es wohl auch können, oder? |
AW: Warten bis ein Programm beendet wird
Ich bin mir nicht sicher, ob du mich richtig verstanden hast, deshalb führe ich das noch etwas weiter aus. Ich sage nicht dem Nutzer, er solle den Neustart unterlassen sondern dem Setup.
Beispiel: ich wähle IE8 und NetSetMan zur Installation aus. Beide Setups laufen durch und keines davon initiiert einen Neustart (IE8 braucht einen, wenn eine ältere Version des IE vorhanden ist). Der Nutzer kann im Zuge der Auswahl der (genannten) Programme entscheiden, ob danach - also nach Abschluss aller Installationen - ein Neustart erfolgt oder nicht. Tut er das, so sind danach alle Programme einsatzbereit, vor dem Neustart nur die, die keinen brauchen. Der Neustart wird dann automatisch ausgelöst, nicht manuell vom Nutzer. D.h. der Nutzer hat nur folgendes zu tun:
MfG Dalai |
AW: Warten bis ein Programm beendet wird
Ich hab dich schon richtig verstanden, aber du erwartest Entscheidungen. Entscheidungen ob OS neu gestartet werden muss, kann oder nicht muss. Das steht nicht zu Debatte. Die Einzigen Entscheidungen die die Nutzer da treffen haben sind, ob ein Programm installiert werden soll oder nicht. Das ist für mich kein Grundsatzfrage was besser ist, sondern es ist so, jetzt gucken wir, wie das Problem zu lösen ist.
|
AW: Warten bis ein Programm beendet wird
Wenn du solche Ansprüche hast, wirst du wohl für jedes Setup eine entsprechende Behandlung implementieren müssen (bzw. in einer Datenbank speichern, die dein Programm zur Behandlung eines Setups benutzt). Denn wenn du willst, dass dein Programm bestimmte Fragen der Setups automatisch beantwortet (z.B. nach einem Neustart), dann muss dein Programm ja wissen wo es einen Klick simulieren muss...
Zitat:
Aber wie dem auch sei: Die Setups hinterlegen wie gesagt entsprechende Autostart-Einträge. Diese führen dann zum Neustart des Setups nach dem Neustart des Systems. |
AW: Warten bis ein Programm beendet wird
Zitat:
Nimm doch die einzelnen Setups und packe sie in ein weiteres äusseres Setup. Die inneren Setup können im Silent-Modus ausgeführt werden. Ob ein Reboot erforderlich ist, lässt sich aus der Registry auslesen: ![]() Als Tool zum Erzeugen des äusseren Gesamtsetups eignet sich ![]() ![]() Beide Setup Script Compiler sind Open Source. Beide können ein Setup nach einem Reboot fortsetzen. Über die Scriptfähigkeit wird es wohl auch möglich sein den Reboot ans Ende des Gesamtsetups zu verlegen. |
AW: Warten bis ein Programm beendet wird
Aus der Gesamtheit von Popovs Beiträgen und meiner Kristallkugel lese ich, dass das eine Art Pakage-Manager für ein DAU-sicher eingerichtet Betriebssystem werden soll :stupid:
|
AW: Warten bis ein Programm beendet wird
Zitat:
MfG Dalai |
AW: Warten bis ein Programm beendet wird
Zitat:
Code:
Ich schon.
Was hast du für Mainboards? Ich habe noch nie erlebt, dass mehr als ein Neustart am Ende notwendig war.
Zitat:
Das Programm soll für AllInOne Sorglos-Pakete für sehr unerfahrene Nutzer sein, wo man verschiedene Programme zu Programmpaketen zusammenstellen kann, z. B. ein Windows wurde frisch installiert, der unerfahrene Nutzer hat keine Ahnung, schiebt eine DVD rein, die installiert alle nötigen Anwendungen nacheinander. Ich glaube was hier gerade abläuft ist sowjetisches Marketing. Wenn die einen Traktor bauten und die Kunden sie baten im nächsten Model einen etwas weichere Sitzpolsterung einzubauen, sagten die nicht ok, sondern fragten wozu das eigentlich nötig ist. Ich hab eine Idee, warum soll ich sie rechtfertigen. Mich interessiert es nicht ob es nötig ist, oder ob man Neustart-Anweisungen befolgen muß, sondern wie man sowas umsetzten kann. Solche Programme gibt es. Wie gesagt, ist erst Planung, die aus Erfahrung ruht. @jaenicke An Autostarts habe ich schon gedacht, ich weiß aber nicht ob das die anderen Programme auch machen. Zumindest kann ich es mir nicht vorstellen. |
AW: Warten bis ein Programm beendet wird
Zitat:
Ich hoffe, dass man an hier, statt zu fragen wozu das Programm nötig ist, sich einfach den Möglichkeiten widmet. |
AW: Warten bis ein Programm beendet wird
Zitat:
Es gibt aber auch Setups, die dort nur einen Bootstrapper Aufruf unterbringen, so dass du kaum eine Möglichkeit hast mitzubekommen ob das Setup nach dem Neustart fertig ist. Der Prozentsatz an solchen Setups ist allerdings äußerst gering. Zitat:
Ändert aber nix daran, dass es nicht so einfach ist. Deshalb habe ich ja auch von einer Datenbank mit den verschiedenen Setups gesprochen, wie du die einzelnen behandeln musst. |
AW: Warten bis ein Programm beendet wird
@jaenicke
Es geht nicht drum ob die Anzahl gering ist. Auch wenn es nur einen von der Sorte auf der Welt gäbe. Das mit einer Datenbank ist eine Möglichkeit, aber jedes Programm vorher testen? Es allgemein zu machen wäre besser. Und noch ein mal, ob man Neustarts ignorieren kann steht nicht zu Debatte. Nicht weil ich das unnötig problematisch machen will, sondern weil es Neustarts gibt. Und wenn du es im Leben noch nie erlebt hast, ich baue mir seit fast 20 Jahren meine PCs alleine und für mich ist es die Regel, dass z. B. bei Treiberinstallation immer ein Neustart nötig wird. Aber nicht nur, auch normale Programme führen die aus, ob nötig oder nicht. Manchmal ist es einfach nur ein Neustart, manchmal eine Unterbrechnung. Komisch, selbst bei Windowsupdates habe ich erlebt, dass mehrere Neustarts durchgeführt wurden. Deshalb werde ich sicherlich nicht einen dicken fetten Hinweis auf dem Programm Fenster platzieren "Neustarts bitte verhindern". Ich würde gerne die Frage ob Neustarts Nötig sind außenvorweglassen. Die sind sowieso der einzige Grund wieso ich frage. Nach meiner Erfahrung spielen RunOnce Aufrufe eine Rolle, aber das kann es nicht alleine sein. |
AW: Warten bis ein Programm beendet wird
Zitat:
Aber wenn dein Hook zu spät gesetzt wird, weil etwas anderes vorher startet, bringt dir das trotzdem nichts. Zitat:
Wenn du eines kennst, das es anders macht, könntest du es posten. Dann können wir gern mal schauen wie es da läuft. |
AW: Warten bis ein Programm beendet wird
Da hätten wir schon das Windows Update, dass noch vor dem Logon Updates installiert und gelegentlich neu startet.
Ich glaube einige Virenscanner installieren sich, starten neu, führen noch vor Logon einen Test durch und führen nach dem Neustart die Installation fort. Ich muß aber zugeben, dass ich auch individuell entscheide ob ich dem Wunsch nach Neustart nachkomme, so dass ich weiß, dass es oft vorkommt, aber ich oft bis zu letzten Installation warte. |
AW: Warten bis ein Programm beendet wird
Das Windows Update und die Virenscanner sind Dienste. Erstens wirst du da kaum zuverlässig herankommen (oder selbst als Virus verdächtigt werden), und zweitens ist das ja denke ich nichts, in das dein Programm eingreifen müsste.
Wissen musst du das doch eigentlich nur, wenn das Setup nach dem Neustart auf dem Desktop fortgesetzt wird (auch im Hintergrund), oder? |
AW: Warten bis ein Programm beendet wird
Zitat:
Diese Analyse müsstest du auf allen (aktuellen/benutzten) Windows-Versionen machen, in unterschiedlichen Konfigurationen (Software nicht vorhanden oder wird "nur" aktualisiert) und das auch noch mit jeder neuen Version des Setups und so weiter. Ich wüsste nicht, welche einfache Methode es für sowas Komplexes geben könnte. Den Status des Gesamtsetups deiner eigenen Software kannst du ja problemlos (in einer Datei oder der Registry) hinterlegen, aber zuverlässig zu erkennen, ob ein fremdes, unbekanntes Setup fertig ist oder nicht, halte ich für viel zu fehleranfällig. Aber vielleicht habe ich dafür auch nicht genug Phantasie oder Vorstellungskraft, das will ich nicht ausschließen. MfG Dalai |
AW: Warten bis ein Programm beendet wird
Zitat:
Womit ich seit Anfang spiele, ist eine Prüfsumme auf jedes ausgeführte Setup-Programm. Wird ein Neustart durchgeführt, und das mitzukriegen ist kein Problem, könnte ich alle ausgeführten Programme im Task ebenfalls testen. Also paar Ideen habe ich schon, nur gefallen sie mir noch nicht so ganz. Ich suche noch weitere Ideen. Das mit der Datenbank kommt aber auf jeden Fall in die Liste. |
AW: Warten bis ein Programm beendet wird
Zitat:
Womit ich seit Anfang spiele, ist eine Prüfsumme auf jedes ausgeführte Setup-Programm. Wird ein Neustart durchgeführt, und das mitzukriegen ist kein Problem, könnte ich alle nach dem Neustart ausgeführten Programme im Task testen. Also paar Ideen habe ich schon, nur gefallen sie mir noch nicht so ganz. Ich suche noch weitere Ideen. Das mit der Datenbank kommt aber auf jeden Fall in die Liste. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz