Benutzer fragen, ob Installation jetzt OK ist

Post Reply
Sascha Offe
Posts: 39
Joined: 05. Aug 2015, 00:04
Contact:

Benutzer fragen, ob Installation jetzt OK ist

Post by Sascha Offe » 13. Jul 2017, 12:28

Hallo,

wie kann ich denn den User fragen, ob er einer Software-Installation bzw. einem Update zustimmen möchte?

Hintergrund: Software X soll aktualisiert werden. Damit das funktioniert, muss die laufende Instanz gekillt werden und/oder am Ende ein Neustart des Rechner durchgeführt werden.

Unsere Pakete laufen i.d.R. komplett stumm, so dass der User nie was mitbekommt (setup.inf mit /S0, die setup.exe u.ä. mit den üblichen Schaltern wie /s(ilent) /q(uiet) usw.). Aber in dem oben genannten Fällen ist das natürlich nicht machbar: Wir können dem User ja nicht ohne Ankündigung einfach das Programm schließen und den Rechner kommentarlos neu starten.

In einem anderen Leben haben ich daher eine passendes Konstrukt entwickelt, aber für die, äh... "Skriptsprache", die in der Empirum-/Setup.inf-Welt genutzt wird, fehlt mir noch das Wissen, wie ich das angehen soll.

Irgendjemand ein passendes Code Snippet zur Hand?

Pseudo-Code-mäßig also so etwa in dieser Art:

Code: Select all

AskUser("Update von X steht an. Das Programm wird geschlossen und der Rechner neu gestartet. Jetzt durchführen?", yes  no)

if yes/UserAgreed
- setup.exe /s
- reboot
if no/UserDisagreed
- ABORT & try next time again (wobei das idealerweise "endlos" versucht werden sollte (User soll gefälligst zustimmen)... also vmtl. die max. Anzahl der Versuche sehr, sehr hoch setzen?

Sascha Offe
Posts: 39
Joined: 05. Aug 2015, 00:04
Contact:

Re: Benutzer fragen, ob Installation jetzt OK ist

Post by Sascha Offe » 13. Jul 2017, 17:30

Nach etwas Suche hier im Forum und in der Doku könnte "AskKillProcesses" hilfreich sein.

Falls jemand noch weitere Tipps hat, nur zu :wink:

dstirner
Posts: 85
Joined: 15. Dec 2015, 10:26
Location: Vilshofen an der Donau
Contact:

Re: Benutzer fragen, ob Installation jetzt OK ist

Post by dstirner » 13. Jul 2017, 17:49

Hallo,
AskKillProsesses ist schon mal gut.

Du musst jedoch zuvor noch die betreffenden Prozesse defnieren.
Hier ein Auszug aus meinem Firefox Paket:

Code: Select all

[Processes]
Firefox=*Firefox*, Mozilla Firefox, KILLPROCESS ABORT

[Product]

AddMeter -1
; Prompt to the User if the application is running? Close the program after timeout
AskKillProcesses 600, Firefox
In der Sektion [Prozesses] definiere ich die betroffenen Prozesse und unter Product überprüfe ich dann, ob der Prozess läuft.
Falls ja, hat der User 600 Sekunden Zeit, die Anwendung zu schließen. Falls die Anwendung nicht innerhalb der 600 Sekunden beendet wird, wird sie das Script abgebrochen.

Ich hoffe, das hilft weiter.

VG
dstirner

Sascha Offe
Posts: 39
Joined: 05. Aug 2015, 00:04
Contact:

Re: Benutzer fragen, ob Installation jetzt OK ist

Post by Sascha Offe » 14. Jul 2017, 12:31

Hi,

danke dafür.

Wobei ich mich wohl auch noch auf die Suche nach einer generischen Lösung machen werden: Simpler Dialog, bei dem der User JA oder NEIN klicken kann und ich dann im im Skript dann je nach Antwort abzweige. Denn es muss ja nicht immer ein Prozess gekillt werden. Manchmal will man ja auch nur den User vor einem anstehenden aber notwendigen Reboot warnen.

Sascha Offe
Posts: 39
Joined: 05. Aug 2015, 00:04
Contact:

Re: Benutzer fragen, ob Installation jetzt OK ist

Post by Sascha Offe » 14. Jul 2017, 14:45

So, hab jetzt noch etwas weitergesucht...

"AskKillProcesses" gefällt mir ehrlicherweise nicht so sehr: Zum einen gibt es Fälle, wo es keinen Prozess zu killen gibt, es eher um einen Neustart am Ende geht. Oder ich dem Setup das Killen überlassen möchte und nicht da reingrätschen möchte.

"AskInfo/InfoText": Funktioniert nur mit min. /S3: Zuviel des guten.
Ausserdem ist das ja wirklich nur eine Anzeige und "Weiter"-Button, keine JA/NEIN-Abfrage.

"AskLicence/LicenceText": Könnte man ja zweckentfremden, hat zumindest eine JA / NEIN -Option.
Aber auch wieder: /S3 ist eigentlich zu geschwätzig...

"Prompt" ist auch zuviel des guten: Ich brauch nur eine Ja-Nein-Button-Kombi, keine Textfelder, die ich irgendwie umdefiniere (nur Zahlen, nur eine Stelle, dass dann "1" "JA" bedeuten soll ist ja für normale Anwender eher nicht intuitiv...)

"SplashDialog": Zeigt ja auch nur Text an, keine Abfrage/Auswertung von JA/NEIN.

Bisheriges Fazit:
"AskLicence" wäre das Einzige, was annäherend dem entspricht, was ich suche.
Aber so richtig toll finde ich das auch nicht...

Noch Ideen?

User avatar
r.wiegel
Posts: 896
Joined: 05. Feb 2010, 13:45
Location: Regensburg
Contact:

Re: Benutzer fragen, ob Installation jetzt OK ist

Post by r.wiegel » 24. Jul 2017, 16:29

Wobei ich mich wohl auch noch auf die Suche nach einer generischen Lösung machen werden: Simpler Dialog, bei dem der User JA oder NEIN klicken kann und ich dann im im Skript dann je nach Antwort abzweige. Denn es muss ja nicht immer ein Prozess gekillt werden. Manchmal will man ja auch nur den User vor einem anstehenden aber notwendigen Reboot warnen.
so was?:

Code: Select all

[Set:Product]
Callhidden cmd.exe /c Powershell.exe -NoProfile -ExecutionPolicy Bypass -file "%src%\CheckUser.ps1"  "Interne IT" "...einverstanden?"
If %errorlevel%==0 Then "Set:ValueYes" Else "Set:ValueNo" EndIf

[Set:ValueYes]

[Set:ValueNo]
CheckUser.ps1:

Code: Select all

param(
[string]$FensterTitel,
[string]$Abfrage)


$wPowerShell=new-object -comobject wscript.shell

$Wartezeit = 0 # ohne Timeout
$Schaltfläche = 4 

$Antwort=$wPowershell.popup($Abfrage,$Wartezeit,$FensterTitel,$Schaltfläche)

if ($Antwort-eq 6) # Ja = 6, Nein = 7
{
    Write-Host "Exiting with code 0"
    exit 0
}
else
{
    Write-Host "Exiting with code 1"
    exit 1
}
Viele Grüße
Roman Wiegel
IT-Consultant

MR Datentechnik - Vertriebs- und Service GmbH

Sascha Offe
Posts: 39
Joined: 05. Aug 2015, 00:04
Contact:

Re: Benutzer fragen, ob Installation jetzt OK ist

Post by Sascha Offe » 08. Sep 2017, 10:49

Jaha, die Powershell-Variante ist doch was Feines, danke für den Tipp.

Ich teste es gerade, sieht schonmal um Welten besser/benutzerfreundlicher aus als das, was man mit Empirum-Bordmitteln dem Anwender zumuten muss :)

Post Reply

Return to “Paketierung”

Who is online

Users browsing this forum: No registered users and 8 guests