simonsayz 10 Posted December 20, 2012 Report Share Posted December 20, 2012 Hallo, ich möchte per batch-script mehrere Programme vollautomatisch und ohne userinteraktion installieren. (Java, MySQL Community Server sowie eine Softwarelösung der Firma Prodress). Ich kann euch zwar eine MS Domäne hochziehen aber vom programmieren habe ich wenig Ahnung. Deshalb habe ich das Meiste aus diversen Internetquellen zusammengesammelt. Die entsprechenden Installationsdateien liegen zusammen mit dem Script in einem Ordner. echo off fsutil fsinfo drives %2>NuL if %errorlevel%==1 ( echo Please run this program as administrator! echo Right click on Install.bat and choose "run as administrator". echo Press any key to abort! pause > nul exit ) else ( goto START ) :START cd /d "%~f0\.." start /wait "" jre1.7.0_09.msi /passive > nul start /wait "" Prodress@Net_Server.exe /silent /sp- /DIR=C:\progra~1\Prodress@Net_Server > nul start /wait "" mysql-5.5.28-win32.msi /passive >nul xcopy "%cd%\my.ini" "C:\Program Files (x86)\MySQL\MySQL Server 5.5" /r /y /q >nul xcopy "%cd%\my.ini" "C:\Program Files\MySQL\MySQL Server 5.5" /r /y /q >nul pause exit Als zusätzliche Aufgabenstellung soll Java und MySQL nur installiert werden wenn es noch nicht installiert wurde. Dabei ist es auch egal ob es sich um eine "veraltete" version handelt die bereits drauf ist, wir wollen nicht riskieren das der Kunde eine Software auf dem Rechner hat die genau die Javaversion braucht und wir sie einfach mit der aktuellen "überbügeln" Ich habe in der Registry geschaut aber dort undter HKLM / Software keine einträge gefunden, in der Systemsteuerung unter Software sind die Programme aber aufgeführtund können deinstalliert werden. Auch die entsprechende my.ini file soll natürlich nur bei neuinstallation kopiert werden (der Part mit xcopy) Habt ihr eine Idee wie man das machen kann? Quote Link to comment
lefg 276 Posted December 20, 2012 Report Share Posted December 20, 2012 (edited) Hallo und Willkommen am Board :) Einige "grundlegende" Möglichkeiten sind: - MSI-Pakete erstellen und diese per Gruppenrichtlinie installieren - WSUS und Local Update Publisher verwenden - Setups per .ini, .xml so konfigurieren, dass sie ohne Benutzerinteraktion und Anzeige ablaufen, quasi /qn. . AutoIt verwenden Für bedingte Installation per Batch müsste wohl vorgeschaltet werden: IF EXIST ..... Edited December 20, 2012 by lefg Quote Link to comment
simonsayz 10 Posted December 20, 2012 Author Report Share Posted December 20, 2012 wsus geht leider nicht ... die software soll für den "otto normal" kunden sein der oft eher "weniger" technisches verständnis hat... der hängt garnicht in unserem netz ;) wir möchten dem kunden deshalb eine "klick and go" lösung empfehlen - klick, geh kaffeetrinken und fertig ;) aus diesem grunde wird auch die my.ini nachher einfach überschrieben und nicht der Kunde durch den configwizard geleitet. Msi Packete brauchen, wenn sie nicht mit Parametern aufgerufen werden, immernoch userinteraktion. Das ist aber nicht gewollt ;) Im Script werden ja auch 2 .msi ś aufgerufen (Java und MySQL) Es geht mir jetzt primär darum die Registrierungsschlüssel zu finden und falls vorhanden die Installation der entsprechenden Software zu überspringen. Ich weiss das das nicht ganz sauber ist (da ja ein vorhandener RegSchlüssel nicht zwangsläufig bedeutet das das Programm auch installiert ist) aber das ist egal. Autoit ist zwar klasse aber zum lernen der Scriptsprache ist zu wenig zeit... Quote Link to comment
lefg 276 Posted December 20, 2012 Report Share Posted December 20, 2012 Man könnte natürlich mit der reg.exe das Vorhandensein von Keys prüfen, man könnte aber auch auf das Installationverzeichnis und bestimmte Dateien darin oder Dateiinhalte testen, davon die Installation abhängig machen. IF EXIST ..... FOR, FOR /F FIND, FINDSTR Quote Link to comment
simonsayz 10 Posted December 20, 2012 Author Report Share Posted December 20, 2012 ja das hab ich auch schon herausgefunden nur finde ich den reg schlüssel nicht von zb java.... HKLM/ Software ist er nicht aber in der systemsteuerung unter software wird er aufgeführt. gleiches bei mysql Danke für deine Hilfe :) Quote Link to comment
lefg 276 Posted December 20, 2012 Report Share Posted December 20, 2012 Ich würde wohl nicht auf Registry-Einträge reflektieren, ich würde wohl erst mal den Installationspfad prüfen. IF EXIST c:\Programme\..... oder IF NOT EXIST ..... Java? Ob man da mal nach Oracle sucht? Unter HKLM\Software ist es nicht eingetragen. Was ist Java denn, eine Software, ein Plug-In? In welchem Kontext, der Maschine oder der USERS? Quote Link to comment
Dukel 416 Posted December 20, 2012 Report Share Posted December 20, 2012 Alles was in der Systemsteuerung deinstallierbar ist liegt unter HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall Quote Link to comment
lefg 276 Posted December 20, 2012 Report Share Posted December 20, 2012 IF NOT EXIST "C:\Program Files (x86)\Java\jre7" ..... Quote Link to comment
Sunny61 718 Posted December 20, 2012 Report Share Posted December 20, 2012 wsus geht leider nicht ... die software soll für den "otto normal" kunden sein der oft eher "weniger" technisches verständnis hat... der hängt garnicht in unserem netz ;) wir möchten dem kunden deshalb eine "klick and go" lösung empfehlen - klick, geh kaffeetrinken und fertig ;) Genau das hat er mit dem Local Update Publisher und dem WSUS zusammen. Du machst das Paket fertig, über den LUP kommt es in den WSUS. Schon wird es auf den Clients installiert. aus diesem grunde wird auch die my.ini nachher einfach überschrieben und nicht der Kunde durch den configwizard geleitet. Die kannst Du angepasst gleich mit ins Paket aufnehmen. Msi Packete brauchen, wenn sie nicht mit Parametern aufgerufen werden, immernoch userinteraktion. Das ist aber nicht gewollt ;) Mittels GPO wird das Paket automatisch silent aufgerufen, über den LUP/WSUS ebenfalls. Es geht mir jetzt primär darum die Registrierungsschlüssel zu finden und falls vorhanden die Installation der entsprechenden Software zu überspringen. Ich weiss das das nicht ganz sauber ist (da ja ein vorhandener RegSchlüssel nicht zwangsläufig bedeutet das das Programm auch installiert ist) aber das ist egal. Auch das kannst Du im LUP einstellen. WSUS.DE - Local Update Publishing Quote Link to comment
simonsayz 10 Posted December 20, 2012 Author Report Share Posted December 20, 2012 hey danke für die antworten :) also , die kunden welche das installationspaket bekommen sind bekleidungs-vertreter. die haben die software teils auf ihren privaten laptops, die hängen weder an unserem wsus noch zwangsläufig an irgendeinem firmen-wsus (auf den ich dann ja sowiso keinen zugriff hätte). auch ist es nicht zwangsläufig so das der laptop in einer firmendomäne ist. das testen auf den installationspfad ist glaube ich eine gute idee, da muss ich nur 2x testen für 32bit und 64bit systeme :) Quote Link to comment
simonsayz 10 Posted December 20, 2012 Author Report Share Posted December 20, 2012 hier meine neuste version, könntet ihr mir bitte mal die syntax überprüfen ? @echo off fsutil fsinfo drives %2>NuL if %errorlevel%==1 ( echo Please run this program as administrator! echo Right click on Install.bat and choose "run as administrator". echo Press any key to abort! pause > nul exit ) else ( goto START ) :START cd /d "%~f0\.." if not exist "c:\Program Files (x86)\Java" (start /wait "" jre1.7.0_09.msi /passive > nul) else if not exist "c:\program files\java" (start /wait "" jre1.7.0_09.msi /passive > nul) start /wait "" Prodress@Net_Server.exe /silent /sp- /DIR=C:\progra~1\Prodress@Net_Server > nul if not exist "c:\Program Files (x86)\MySQL" (start /wait "" mysql-5.5.28-win32.msi /passive >nul) else if not exist "c:\program files\mysql" (start /wait "" mysql-5.5.28-win32.msi /passive >nul) if exist "C:\Program Files (x86)\MySQL\MySQL Server 5.5" (xcopy "%cd%\myini\my.ini" "C:\Program Files (x86)\MySQL\MySQL Server 5.5" /r /y /q >nul) else (xcopy "%cd%\my.ini" "C:\Program Files\MySQL\MySQL Server 5.5" /r /y /q >nul) pause exit Quote Link to comment
simonsayz 10 Posted December 20, 2012 Author Report Share Posted December 20, 2012 edit vom chef: ich soll nicht auf pfade sondern auf registryeinträge überprüfen.... Quote Link to comment
Dr.Melzer 191 Posted December 20, 2012 Report Share Posted December 20, 2012 @simonsayz: Bitte benutze in Zukunft doch auch Großbuchstaben. je besser wir deine Beiträge lesen können umso besser können wir dir helfen. :-) Quote Link to comment
Sunny61 718 Posted December 21, 2012 Report Share Posted December 21, 2012 if not exist "c:\Program Files (x86)\Java" Was machst Du, wenn das Verzeichnis C:\Programme heißt? Verwende die vorhandenen Systemvariablen. Start > Ausführen > cmd [ENTER] > SET [ENTER]. Quote Link to comment
simonsayz 10 Posted December 21, 2012 Author Report Share Posted December 21, 2012 Hallo :) Ja die Idee den Pfad zu prüfen hat sich eh erledigt, ich soll definitiv auf die Registryeinträge prüfen... Allerdings hatte ich ja "if not exist "c:\Program Files (x86)\MySQL" und "else if not exist "c:\program files\mysql" drin um beide Situationen abzudecken. Ich werde jetzt mal Java und MySQL deinstallieren und danach neu installieren. Vielleicht finde ich ja so 2 Keys auf die ich prüfen kann. Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.