AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Warten bis ein Programm beendet wird
Thema durchsuchen
Ansicht
Themen-Optionen

Warten bis ein Programm beendet wird

Ein Thema von Popov · begonnen am 30. Mai 2012 · letzter Beitrag vom 31. Mai 2012
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#1

AW: Warten bis ein Programm beendet wird

  Alt 30. Mai 2012, 18:16
Aber einige Setups haben nun mal so an sich, dass sie zwischendurch oder danach das OS neu starten.
Ich hatte das Problem bisher noch nicht. Warum? Weil ich allen Setups untersage, den PC neu zu starten, entweder per Parameter (InnoSetup, Windows Installer) oder sonstwie.

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
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: Warten bis ein Programm beendet wird

  Alt 30. Mai 2012, 20:35
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?
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#3

AW: Warten bis ein Programm beendet wird

  Alt 30. Mai 2012, 21:12
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:
  • die Programme wählen, die er haben will
  • auf "Installieren" klicken
  • warten, bis alles fertig ist (und währenddessen Tee oder Kaffee trinken oder so )
Braucht ein Programm einen Neustart, so wird dies während der Installation in einem Memo vermerkt, und - sofern der Nutzer bei Punkt 1 den Neustart aktiviert hat - wird der auch durchgeführt. Ein Rundum-Sorglos-Paket ist das nicht ganz (war auch nie so geplant oder ausgelegt), weil dem Nutzer die Wahl gelassen wird. Trotzdem haben sich schon mehrere Personen von diesem System begeistert gezeigt.

MfG Dalai

Geändert von Dalai (30. Mai 2012 um 21:17 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#4

AW: Warten bis ein Programm beendet wird

  Alt 30. Mai 2012, 21:32
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.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.054 Beiträge
 
Delphi 12 Athens
 
#5

AW: Warten bis ein Programm beendet wird

  Alt 30. Mai 2012, 22:57
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...

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?
Was hast du für Mainboards? Ich habe noch nie erlebt, dass mehr als ein Neustart am Ende notwendig war.
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#6

AW: Warten bis ein Programm beendet wird

  Alt 31. Mai 2012, 00:30
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).
Genau da sehe ich auch das Problem, aber eher darin, dass die Setups durchaus an unterschiedlichen Stellen des OS hinterlegen können, was nach dem nötigen Neustart weiter passieren soll (Dateien umbenennen, Treiber laden, komplettes Setup fortsetzen). Und das Rausfinden und Beachten/Berücksichtigen dessen halte ich für zu viel Aufwand, denn das kann sich ja mit jeder neuen Setup-Version ändern. Neustart unterdrücken, bis alle Einzelsetups durch sind, ist das wesentlich einfacher. Ich habe bisher noch kein Setup erlebt, das einen Neustart trotzdem durchführte, oder das einfach ungefragt getan hätte (soll aber nicht unbedingt heißen, dass es sowas nicht gibt).

MfG Dalai
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#7

AW: Warten bis ein Programm beendet wird

  Alt 31. Mai 2012, 00:46
Wenn du solche Ansprüche hast
Was verstehst du unter Ansprüche? Für mich ist das normalen Ablauf.

Code:
Was hast du für Mainboards? Ich habe noch nie erlebt, dass mehr als ein Neustart am Ende notwendig war.
Ich schon.

Zitat von sx2008:
Ich verstehe nicht so ganz, weshalb du ein eigenes Programm entwickeln möchtest (das Rad neu erfinden).
Ich glaube das Problem wurde falsch verstanden, es geht nicht drum mehrere meiner Programme zu installieren, sondern fremde Programme von denen ich nicht weiß wie sie einzeln für sich installiert werden.

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.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.054 Beiträge
 
Delphi 12 Athens
 
#8

AW: Warten bis ein Programm beendet wird

  Alt 31. Mai 2012, 05:02
@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.
Das ist aber der normale Ablauf. Genau für solche Zwecke ist der RunOnce Key in der Registry gedacht, den ich anfangs genannt hatte.

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.

12 Beiträge bis einer verstanden hat was ich meine.
Das war mir schon von Anfang an klar.
Ä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.
Sebastian Jänicke
AppCentral

Geändert von jaenicke (31. Mai 2012 um 05:04 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#9

AW: Warten bis ein Programm beendet wird

  Alt 31. Mai 2012, 07:05
@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.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.054 Beiträge
 
Delphi 12 Athens
 
#10

AW: Warten bis ein Programm beendet wird

  Alt 31. Mai 2012, 07:42
Das mit einer Datenbank ist eine Möglichkeit, aber jedes Programm vorher testen? Es allgemein zu machen wäre besser.
Dann wirst du wohl alles hooken müssen was nicht niet- und nagelfest ist und ganz genau schauen was welches Programm macht... Sprich welche Prozesse gestartet werden, welche Registryeinträge in den Autostart-Schlüsseln gesetzt werden, ...
Aber wenn dein Hook zu spät gesetzt wird, weil etwas anderes vorher startet, bringt dir das trotzdem nichts.

Nach meiner Erfahrung spielen RunOnce Aufrufe eine Rolle, aber das kann es nicht alleine sein.
Ich hatte bisher nur Setups, die damit (oder unsaubererweise mit einer anderen Autostart-Möglichkeit, sprich Run etc.) liefen oder die einen Updatedienst installiert haben, der dann den Rest erledigt hat.

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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:59 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-2025 by Thomas Breitkreuz