| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: mit Batch Aktion ausführen wenn Programm X und Y (evtl. auch Z) nicht mehr laufen im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Guten Morgen, hab mich hier mal angemeldet, da ich mit einer Sache nicht weiterkomme. Ich möchte für mich eine ...
![]() |
| | #1 (permalink) |
| Registriert seit: 26.03.11 ![]() Likes: 0 | Anzeige Guten Morgen, hab mich hier mal angemeldet, da ich mit einer Sache nicht weiterkomme. Ich möchte für mich eine 7zip SFX Datei erstellen, die den WinRAR Installer ausführt und rarreg.key mitnimmt, damit WinRAR beim Neuaufsetzen von VMs gleich registriert ist. Momentan hab ich das so gemacht, dass die rarreg.key, der Installer und eine Batch in ein Temp-Verzeichnis entpackt werden. Die 7z SFX ruft dann die Batch Datei auf, die den Installer startet und -da liegt das Problem- wartet bis der fertig ist, um dann das Temp-Verzeichnis zulöschen. Ganz quick'n'dirty lässt sich das machen, wenn ich einfach folgendes mache: Code: winrarivsetup\wrar400d.exe ping -n 60 localhost > NUL :clear echo loesche ... rd /s /q "%TEMP%\winrarivsetup" del install.bat pause >nul Code: rem @echo off
winrarivsetup\wrar400d.exe
:check1
rem cls
ping -n 6 localhost > NUL
TaskList /FI "IMAGENAME eq wrar400d.exe" 2>NUL | Find "wrar400d.exe" >NUL
IF ERRORLEVEL == 1 (
ECHO NOT Running.
GOTO check2
) ELSE (
ECHO Running.
GOTO check1
)
:check2
rem cls
ping -n 6 localhost > NUL
TaskList /FI "IMAGENAME eq uninstall.exe" 2>NUL | Find "uninstall.exe" >NUL
IF ERRORLEVEL == 1 (
ECHO NOT Running.
GOTO clear
) ELSE (
ECHO Running.
GOTO check1
)
:clear
cls
echo loesche ...
pause >nul
rd /s /q "%TEMP%\winrarivsetup"
del install.bat
pause >nul Anm.: Die REM, pause und ECHO Befehle sind gesetzt, weil ich dachte, dann zu erfahren, warum er nicht tut, was er soll. Aber Fehlanzeige. Der ping Befehl soll dafür sorgen, dass er nicht ununterbrochen CPU-Last erzeugt, um die lfd. Prozesse zu prüfen. Wenn ich das richtig sehe, ist die wrar400d.exe der eigentliche Installer, aber danach startet die Uninstall.exe, über die zum einen div. Einstellungen vorgenommen werden können (Dateiverknüpfungen etc.) und die auch autom. die rarreg.key ins Installationsverzeichnis kopiert. Falls jmd. hier auch eine Idee für ne einfachere/elegantere Lösung ohne Batch hat, bin ich dafür natürlich offen. |
| | |
| | #2 (permalink) |
| Member of Honour ![]() | Visual Studio Express (-> kostenlos) eignet sich perfekt solche kleinen Installer zu bauen, weil es eine geeignete Thread und Prozesskontrolle hat. Wenn du es dann auf .NET FW 2 "kompilierst" läuft der Setup auf allen Winsystemen ab XP. Google diesbezüglich einfach mal nach "VB NET system.process" suchen. Dort dürftest du alles finden, was du brauchst. ![]() In Batch finde ich solche Sachen immer sehr kompliziert umzusetzen. Wenn es dir aber reicht, kannst du den Prozess mit "start /wait PROZESS" starten - dann wartet Batch bis zum Ende des Durchlaufs. lG
__________________ << Wir leben bereits im morgigen Gestern, doch vom gestrigen Morgen sind wir noch weit entfernt. >> << Träume sind Schäume. Es liegt an dir ob du sie lebst oder ein Schaumschläger bist! >> << Erst wenn man beginnt zu implizieren, wird man merken, dass einem sowieso keiner richtig zuhört. >> |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Themenstarter Registriert seit: 26.03.11 ![]() Likes: 0 | Hmm, Visual Studio Express werd ich mir heut abend mal ankucken. Habs halt mit Batch versucht, weil ich mich da vor kurzem wg. was anderm etwas reingelesen hatte. Das Problem ist dabei allerdings, dass der "Setupprozess" ja nicht mit Beenden der eigentlichen wrar400d.exe erledigt ist, sondern diese direkt im Anschluss die (dann installierte) Uninstall.exe startet, die die "Einrichtung" (Einstellungen und Kopieren der rarreg.key) durchführt. Sonst wärs ja "zu einfach". *hrhr* Nachtrag: Da gibt es verschiedene Varianten zum DL, aber keine die genau "Visual Studio Express" heißt. Vllt. dann "Visual C# 2010 Express"? Geändert von Schattenspieler (26.03.11 um 14:21 Uhr) |
| | |
| | #4 (permalink) |
| Member of Honour ![]() | Ist normalerweise egal, aber ich bevorzuge die VB-Version, weil es einfacher zu erlernen ist: Visual Basic 2010 Express: http://go.microsoft.com/?linkid=9709933 Wenn du Probleme mit dem WebInstaller hast, dann kann man sich auch die ISO ziehen ![]() lG
__________________ << Wir leben bereits im morgigen Gestern, doch vom gestrigen Morgen sind wir noch weit entfernt. >> << Träume sind Schäume. Es liegt an dir ob du sie lebst oder ein Schaumschläger bist! >> << Erst wenn man beginnt zu implizieren, wird man merken, dass einem sowieso keiner richtig zuhört. >> |
| | |
| | #5 (permalink) |
| Senior Member Registriert seit: 10.03.07 ![]() Likes: 19 | Um das ganze Problem in der Batch zu lösen, sollte ein "start /wait" vor den Befehlen, wo bis zum Beenden gewartet werden soll, reichen. Bei externen Programmen ist Windows Batch so hoch intelligent, dass es neue Prozesse abspaltet und einfach weiterläuft... |
| | |
| | #6 (permalink) |
| Themenstarter Registriert seit: 26.03.11 ![]() Likes: 0 | Das mit dem Abspalten versteh ich grad nicht. Werd mir mal die C#/NET Version raufmachen; hatte mich mit nem Kumpel schonmal issl unterhalten und er hat mir dazu geraten. Geändert von Schattenspieler (26.03.11 um 21:36 Uhr) |
| | |
| | #7 (permalink) |
| Senior Member Registriert seit: 10.03.07 ![]() Likes: 19 | Das Programm, welches du startest, wird einfach gestartet und dann sofort, ohne auf Beendigung des vorher gestarteten Programmes zu warten, mit dem nächsten Befehl weitergemacht. Probiere doch einfach mal aus, vor den Aufruf des Setups noch "start /wait" zu machen: Code: start /wait winrarivsetup\wrar400d.exe :clear echo loesche ... rd /s /q "%TEMP%\winrarivsetup" del install.bat pause >nul |
| | |
![]() |
| Stichworte |
| 7zip, batch, installer, programme, sfx |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |