Hallo,
ich bin gerade dabei meine installations Scripte weiter auszupfeilen, so prüfe ich jetzt ob genug Speicherplatz vorhanden ist, ob das OS kompatibel ist, ob eine alte Version vorhanden ist, die noch deinstalliert werden muss.. alles läuft fein.
Was mir aber noch fehlt ist die Überprüfung, ob ein Programm noch läuft, also der Prozess word.exe z.B.
Für den Anfang würde es mir reichen, dass er das Setup bei einer positiven Rückmelden (Prozess vorhanden) einfach abbricht mit eine Info Message ausgibt "Programm läuft noch".
Im Ideal fall, informiere ich den User per "message "Bitte alles Office Programme beenden!" und nach Beendigung, läuft die Setup routine weiter.
Es gibt ja die Option "WinBatch /waitforprocessending xyz.exe". Das funktioniert aber nicht richtig bei mir. Also ja, er wartet tatsächlich bis das Programm beendet wird, wenn ich es dann beendet habe, bricht das Setup an der Stelle auch ab.
Also ich würde ja am liebsten per if-Frage prüfen, mit einem true/false Ergebnis. Hat dies schon jemand umgesetzt?
Danke!
GELÖST: Prüfen ob Prozess läuft
GELÖST: Prüfen ob Prozess läuft
Zuletzt geändert von cmu am 26 Jan 2012, 13:46, insgesamt 1-mal geändert.
Re: Prüfen ob Prozess läuft
Selber gelöst:
Das script macht nichts anderes als zuerst eine Batchdatei auszuführen, die prüft ob ein Prozess läuft. Tut es dies, wird eine true.txt in tmp gespeichert.
Nachfolgend prüfe ich dann, ob es eine true.txt gibt -> wenn ja, dann muss das Prog. noch laufen, wenn nicht, dann läuft die routine weiter.
Um Fehler zu vermeiden, lass ich vor Prüfung die ture.txt loeschen.
Folgende Batchdatei im %scriptpath% ablegen:
check.bat:
@echo off
del c:\tmp\true.txt
set Programm=xyz.exe
tasklist |find /i "%Programm%" >nul
if %errorlevel% == 0 (
echo true >> c:\tmp\true.txt
exit
)
im winst script:
[Actions]
DefVar $check_run$
set $check_run$ = "c:\tmp\true.txt"
;Pruefen, ob Programm noch laeuft.
WinBatch_check
if (FileExists($check_run$))
Message "Programm laeuft noch!"
isFatalError
[WinBatch_check]
"%SCRIPTPATH%\check.bat"
Das script macht nichts anderes als zuerst eine Batchdatei auszuführen, die prüft ob ein Prozess läuft. Tut es dies, wird eine true.txt in tmp gespeichert.
Nachfolgend prüfe ich dann, ob es eine true.txt gibt -> wenn ja, dann muss das Prog. noch laufen, wenn nicht, dann läuft die routine weiter.
Um Fehler zu vermeiden, lass ich vor Prüfung die ture.txt loeschen.
Folgende Batchdatei im %scriptpath% ablegen:
check.bat:
@echo off
del c:\tmp\true.txt
set Programm=xyz.exe
tasklist |find /i "%Programm%" >nul
if %errorlevel% == 0 (
echo true >> c:\tmp\true.txt
exit
)
im winst script:
[Actions]
DefVar $check_run$
set $check_run$ = "c:\tmp\true.txt"
;Pruefen, ob Programm noch laeuft.
WinBatch_check
if (FileExists($check_run$))
Message "Programm laeuft noch!"
isFatalError
[WinBatch_check]
"%SCRIPTPATH%\check.bat"