überprüfung per batch ob mysql installiert ist ansonsten installieren
Hallo,
ich würde gerne per Batch überprüfen ob MySql installiert ist, wenn nicht soll es installiert werden.
Könntet ihr bitte einmal die Syntax überprüfen, ich hab da noch so meine schwächen :/
Mit
reg query "HKEY_CURRENT_USER\SOFTWARE\MYSQL AB" /k
wird überprüft ob ein key mit diesem Namen vorhanden ist, richtig?
dafür benutze ich folgenden Code:
reg query "HKEY_CURRENT_USER\SOFTWARE\MYSQL AB" /k
if errorlevel 1 (start /wait ""mysql-5.5.28-win32.msi /passive >nul)
else (goto copy)
:COPY
...
...
...
ich würde gerne per Batch überprüfen ob MySql installiert ist, wenn nicht soll es installiert werden.
Könntet ihr bitte einmal die Syntax überprüfen, ich hab da noch so meine schwächen :/
Mit
reg query "HKEY_CURRENT_USER\SOFTWARE\MYSQL AB" /k
wird überprüft ob ein key mit diesem Namen vorhanden ist, richtig?
dafür benutze ich folgenden Code:
reg query "HKEY_CURRENT_USER\SOFTWARE\MYSQL AB" /k
if errorlevel 1 (start /wait ""mysql-5.5.28-win32.msi /passive >nul)
else (goto copy)
:COPY
...
...
...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 196424
Url: https://administrator.de/forum/ueberpruefung-per-batch-ob-mysql-installiert-ist-ansonsten-installieren-196424.html
Ausgedruckt am: 10.04.2025 um 20:04 Uhr
11 Kommentare
Neuester Kommentar
Hi simonSayz!
Welches OS? ISt auch VBSCRIPT oder Powershell möglich?
nach installierten Programmen suchst du am besten hier: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
und hier:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
Da liegt alles was du auch unter Add/Remove Programs siehst mit ein paar wenigen Ausnahmen.
Falls du weißt wie der ProductKey deiner Isntallation lautet oder eine MSI als installationssource hast kannst du auch ganz einfach so machen:
MSIEXEC /I <deine MSI> /qn
Ist das Product schon isntalliert bricht der Installer ab sollte das gleiche Product schon vorhanden sein. Umgekehrt geht das genau so (MSIEXEC /X <deine MSI> /qn). Der Isntaller bricht die Deinstallation ab wenn er das Produkt nicht finden kann im System. Eventuell muss die MSI noch angepasst werden (falls noch irgendwelche Daten eingetragen werden müssen während der Installation) ==> ORCA.exe ==> Transform erstellen
Grüße!
Mayho
Welches OS? ISt auch VBSCRIPT oder Powershell möglich?
nach installierten Programmen suchst du am besten hier: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
und hier:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
Da liegt alles was du auch unter Add/Remove Programs siehst mit ein paar wenigen Ausnahmen.
Falls du weißt wie der ProductKey deiner Isntallation lautet oder eine MSI als installationssource hast kannst du auch ganz einfach so machen:
MSIEXEC /I <deine MSI> /qn
Ist das Product schon isntalliert bricht der Installer ab sollte das gleiche Product schon vorhanden sein. Umgekehrt geht das genau so (MSIEXEC /X <deine MSI> /qn). Der Isntaller bricht die Deinstallation ab wenn er das Produkt nicht finden kann im System. Eventuell muss die MSI noch angepasst werden (falls noch irgendwelche Daten eingetragen werden müssen während der Installation) ==> ORCA.exe ==> Transform erstellen
Grüße!
Mayho
Moin,
Unter hkcu waere wohl der platz, an dem ich eher garnicht suchen wuerden wollte.
Vielleicht mit nem net start|find /i "mysql" aber das findet auch nicht immer eine bestehende installation. (xamp lasse ich mal aussen vor)
Jetzt spinn deine letzte zeile doch mal bis zu ende......
Was soll passieren, wenn der "kunde" ein asbach mysql samt sicherheitsloechern auf seiner kiste hat?
Batch ist da eher ... vbscript laeuft auch unter xp
Ueberleg mal, wohin die reise gehen soll.
N8
Unter hkcu waere wohl der platz, an dem ich eher garnicht suchen wuerden wollte.
Vielleicht mit nem net start|find /i "mysql" aber das findet auch nicht immer eine bestehende installation. (xamp lasse ich mal aussen vor)
Jetzt spinn deine letzte zeile doch mal bis zu ende......
Was soll passieren, wenn der "kunde" ein asbach mysql samt sicherheitsloechern auf seiner kiste hat?
Batch ist da eher ... vbscript laeuft auch unter xp
Ueberleg mal, wohin die reise gehen soll.
N8
Hmmmmmmmmmmmmmmm...
Offleine ... Mysql..... Gabs da nicht was von x a mp?
Da soll der chef halt selber baetcheln, wenn er meint dass und richte ihm nen schoenen gruss aus, java nur dann, wenn die app einen bestimmten pfad von java benutzt und sowas maxhen nur vollheinis, typische herangehensweise hazptsache mein driet laeuft, ob ich in 2 jahren damit eine sicherheitsluecke beim kunden hinterlasse ist mir doch wumpe.
Ps was bedeutet das c in current user?
Ps 2 wieviele arten mysql zu benutzen kennst du? Ich kenn mindestens zwei mehr und die willst du allesamt mit einem rutschmaldueberbatch fuer alle versionen abfruehstuecken?
Und nochmal... Was soll passieren, wenn der kunde eine andere version von mysql hat?
Oder die gleiche, aber mit anderen einstellungen?
Am propos Einstellungen, was passiert, wennn man(n) eine app zusammenklatscht, die auf einen mysql server hoert, der auf port xzy statt abc lauscht?
denk mal drueber nach
Gruss
Offleine ... Mysql..... Gabs da nicht was von x a mp?
Da soll der chef halt selber baetcheln, wenn er meint dass und richte ihm nen schoenen gruss aus, java nur dann, wenn die app einen bestimmten pfad von java benutzt und sowas maxhen nur vollheinis, typische herangehensweise hazptsache mein driet laeuft, ob ich in 2 jahren damit eine sicherheitsluecke beim kunden hinterlasse ist mir doch wumpe.
Ps was bedeutet das c in current user?
Ps 2 wieviele arten mysql zu benutzen kennst du? Ich kenn mindestens zwei mehr und die willst du allesamt mit einem rutschmaldueberbatch fuer alle versionen abfruehstuecken?
Und nochmal... Was soll passieren, wenn der kunde eine andere version von mysql hat?
Oder die gleiche, aber mit anderen einstellungen?
Am propos Einstellungen, was passiert, wennn man(n) eine app zusammenklatscht, die auf einen mysql server hoert, der auf port xzy statt abc lauscht?
denk mal drueber nach
Gruss
Das steht im kleinen grossen 1*1 der softwareverteilung oder im path
Less doch einfach mal die zeilen, die ich dir geschrieben habe und ueberleg mal, ob und wieviele versteckte ansaetze du da findest.
Ps zum ausgang zurueck, was passiert da oben, wenn der errorlevel ungleich 1 ist und der absatz copy der naechste schritt ist?
Wie stellst du sicher, dass derjenige, der vorm rechner sitzt auch ein msiexec ausfuehren darf?
so ich hoff das ist jetzt klar ;)
Less doch einfach mal die zeilen, die ich dir geschrieben habe und ueberleg mal, ob und wieviele versteckte ansaetze du da findest.
Ps zum ausgang zurueck, was passiert da oben, wenn der errorlevel ungleich 1 ist und der absatz copy der naechste schritt ist?
Wie stellst du sicher, dass derjenige, der vorm rechner sitzt auch ein msiexec ausfuehren darf?
reg query "HKEY_CURRENT_USER\SOFTWARE\MYSQL AB" /k
if errorlevel 1 (start /wait ""mysql-5.5.28-win32.msi /passive >nul)
else (goto copy)
:COPY
1) Unter welchem OS testet Du?
2) Parameter /k unter xp bedeutet /kenn ich nicht?
Schau dir mal meine Demo an
C:\>reg query "HKEY_CURRENT_USER\SOFTWARE\MYSQL AB" /k
Fehler: Ungültige Befehlszeilenparameter
C:\>reg query "HKEY_CURRENT_USER\SOFTWARE\MYSQL AB" /s
Fehler: Der angegebene Registrierungsschlüssel oder Wert konnte nicht gefunden w
erden.
C:\>net start |find /i "mysql"
C:\>mysql.exe -udau -pdau dau
ERROR 1045 (28000): Access denied for user 'dau'@'localhost' (using password: YE
S)
C:\>
Was sagt dir das?
/k kenn ich nicht
/kein /key in deinem Pfad?
/kein Mysql Dienst bei mir aktiv
/kann aber trotzdem (mit ner Fehlermeldung, weils der falsche User und das falsche Passwort ist) mit mysql kommunizieren?
/
(vielleicht, macht es das oben geschriebene einfacher für dich)
Gruß
Zitat von @simonSayz:
da ich systemintegrator bin und kein anwendungsentwickler sagt mir das oben nicht viel....
da ich systemintegrator bin und kein anwendungsentwickler sagt mir das oben nicht viel....
merkwürdig....
http://technet.microsoft.com/de-de/library/cc742028%28v=ws.10%29.aspx
/k Specifies to search in key names only.
/k Specifies to search in key names only.
C:\>ver
Microsoft Windows XP [Version 5.1.2600]
C:\>reg query /?
Konsolenregistrierungsprogramm für Windows - Version 3.0
Copyright (C) Microsoft Corp. 1981-2001. Alle Rechte vorbehalten
REG QUERY Schlüssel [/v Wert | /ve] [/s]
Schlüssel [\Computer\]Vollst.Schlüssel
Computer Remotecomputer; ohne Standardeinstellungen des Compute
Nur HKLM und HKU sind auf Remotecomputern verfügbar.
Vollst.Schlüssel Format "STAMMSCHLÜSSEL\Unterschlüssel"
STAMMSCHLÜSSEL [ HKLM | HKCU | HKCR | HKU | HKCC ]
Unterschlüssel Der vollst. Name des Schlüssels unter dem STAMMSCHLÜSS
Wert Der zu suchende Wert unter einem Schlüssel. Ohne Angab
wird nach allen Werten des Schlüssels gesucht.
/v Sucht nach einem bestimmten Registrierungsschlüssel.
/ve Sucht nach dem Standard- oder leeren Wert <no name>.
/s Sucht nach allen Unterschlüsseln und Werten.
Beispiele:
REG QUERY HKLM\Software\Microsoft\ResKit /v Version
Zeigt den Registrierungswert Version an.
REG QUERY HKLM\Software\Microsoft\ResKit\Nt\Setup /s
Zeigt Unterschlüssel und Werte unterhalb des Schlüssels "Setup" an.
C:\>
ob man jetzt vllt ein level tiefer gehen muss oder ob dafür das prüfen auf "mysql ab" schon reicht weiss ich nicht.
Nochmal....
Wie (bei walla isch schörrr die obige Demo in den Code Tags ist nicht gefaked) funktioniert das dann?
Für Systemin und extriganten was bedeuten meine Zeilen?
- Muß man Mysql installieren?
- Welche Nebenwirkungen hat das, wenn man es (obwohl man es nicht machen muß)?
Ergo?
Komm schon - ich machs dir echt einfach - such z.B mal die Zeile mit dem X die da oben versteckt ist oder die mit dem P wie "Port" wobei das dann schon den Port im Sinn von "Port auf dem MYSQL lauscht" als auch Port als Anfang von able meint.
Etwas Eigeninitiative darf ich doch verlangen, wenn ich dir (auf die du übrigens nicht eingegangen bist) schon die ganze was wäre wenn Arbeit abnehme...
Und die "was wäre wenn" Nummer muß ein Integrator auch können.
Gruß
Zitat von @simonSayz:
wenn ich unter hklm schaue steht dort nichts von mysql, unter hkcu schon (und der eintrag >wird bei deinstallation auch entfernt).
wenn ich unter hklm schaue steht dort nichts von mysql, unter hkcu schon (und der eintrag >wird bei deinstallation auch entfernt).
OK! in diesem Fall hat das nicht wirklich was zu bedeuten. Könnte höchstens sein, dass wenn du dich als anderer user anmeldest keine Einträge unter Start ==> Programme findest.
Was steht den in dieser Section in HKCU?
ev ist das was brauchbares dabei. BATCH als Vorgabe des Chefs finde ich, mal gelinde gesagt, Rückständig. mein haupt geschäft ist die Re-/ und Packetierung von Software bzw. Isntallationsautomatisierung. Da wird so ziemlich alles via VBSCRIPT erledigt. Warum? Platformunabhängig, Zugriff auf viele Funktionen die in BATCH tlw. nicht vorhanden sind (Z.B WMI), besseres debuging.
ber Script wäre es einfach die Installation von mysql zu checken.
Versuch mal im Isntallationspfad nachzuschauen (per Batch) ob die Exe da ist und in welcher version, Vielleicht kannst du das so abfackeln.
Zitat von @simonSayz:
wo steht das denn bitte?
da steht nur das java immer installiert werden kann denn wenn eine bestimmte version von java von einem programm benutzt werden muss und es
installiert ist stört es nicht, wenn ein weiteres java installiert wurde (zb eine spätere version)
bei mysql ist das eben nicht so, kein grund ausfallend zu werden... hier zählt nur "ist installiert" oder "ist nicht installiert". Wie das
ganze genutzt wird ist mir quasi egal, wenn es installiert ist (und wie auch immer konfiguriert) dann installiere ich es nicht nochmal (selbst > wenns eine veraltete version ist)
so ich hoff das ist jetzt klar ;)
wo steht das denn bitte?
da steht nur das java immer installiert werden kann denn wenn eine bestimmte version von java von einem programm benutzt werden muss und es
installiert ist stört es nicht, wenn ein weiteres java installiert wurde (zb eine spätere version)
bei mysql ist das eben nicht so, kein grund ausfallend zu werden... hier zählt nur "ist installiert" oder "ist nicht installiert". Wie das
ganze genutzt wird ist mir quasi egal, wenn es installiert ist (und wie auch immer konfiguriert) dann installiere ich es nicht nochmal (selbst > wenns eine veraltete version ist)
so ich hoff das ist jetzt klar ;)
kann man mysql nicht sagen welche Javaversion es verwenden soll? denke schon. in irgend einer cfg oder ini oder einer systemvariable (meißtens Path) kann sowas hinterlegt werden. so verwendet mysql nur die Java die es verwenden soll. auch wenn x andere Versionen vorhanden sind.
lg
mayho