simonsayz 10 Geschrieben 20. Dezember 2012 Melden Teilen Geschrieben 20. Dezember 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? Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 20. Dezember 2012 Melden Teilen Geschrieben 20. Dezember 2012 (bearbeitet) 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 ..... bearbeitet 20. Dezember 2012 von lefg Zitieren Link zu diesem Kommentar
simonsayz 10 Geschrieben 20. Dezember 2012 Autor Melden Teilen Geschrieben 20. Dezember 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... Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 20. Dezember 2012 Melden Teilen Geschrieben 20. Dezember 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 Zitieren Link zu diesem Kommentar
simonsayz 10 Geschrieben 20. Dezember 2012 Autor Melden Teilen Geschrieben 20. Dezember 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 :) Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 20. Dezember 2012 Melden Teilen Geschrieben 20. Dezember 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? Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 20. Dezember 2012 Melden Teilen Geschrieben 20. Dezember 2012 Alles was in der Systemsteuerung deinstallierbar ist liegt unter HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 20. Dezember 2012 Melden Teilen Geschrieben 20. Dezember 2012 IF NOT EXIST "C:\Program Files (x86)\Java\jre7" ..... Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 20. Dezember 2012 Melden Teilen Geschrieben 20. Dezember 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 Zitieren Link zu diesem Kommentar
simonsayz 10 Geschrieben 20. Dezember 2012 Autor Melden Teilen Geschrieben 20. Dezember 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 :) Zitieren Link zu diesem Kommentar
simonsayz 10 Geschrieben 20. Dezember 2012 Autor Melden Teilen Geschrieben 20. Dezember 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 Zitieren Link zu diesem Kommentar
simonsayz 10 Geschrieben 20. Dezember 2012 Autor Melden Teilen Geschrieben 20. Dezember 2012 edit vom chef: ich soll nicht auf pfade sondern auf registryeinträge überprüfen.... Zitieren Link zu diesem Kommentar
Dr.Melzer 191 Geschrieben 20. Dezember 2012 Melden Teilen Geschrieben 20. Dezember 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. :-) Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 21. Dezember 2012 Melden Teilen Geschrieben 21. Dezember 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]. Zitieren Link zu diesem Kommentar
simonsayz 10 Geschrieben 21. Dezember 2012 Autor Melden Teilen Geschrieben 21. Dezember 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. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.