simonsayz
Goto Top

ü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

...
...
...

Content-Key: 196424

Url: https://administrator.de/contentid/196424

Printed on: April 25, 2024 at 03:04 o'clock

Member: mayho33
mayho33 Jan 03, 2013 at 10:36:58 (UTC)
Goto Top
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
Member: simonSayz
simonSayz Jan 03, 2013 at 12:23:12 (UTC)
Goto Top
hallo, danke für deine antwort face-smile

es muss batch sein, für xp und später.

ja leider muss mysql dann eine der wenigen Ausnahmen sein, an beiden von dir angegebenen stellen kann ich keinen mysql key finden.

es geht darum das ,egal welches mysql installiert ist, das mysql dann nicht "übergebügelt" wird mit der version aus der msi die ich nutze.

das könnte nämlich fatal sein wenn ein kunde software hat die absolut zwingend eine bestimmte version von mysql zum laufen braucht.
Member: Nr60730
Nr60730 Jan 03, 2013 at 13:49:05 (UTC)
Goto Top
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 face-wink

Ueberleg mal, wohin die reise gehen soll.

N8
Member: simonSayz
simonSayz Jan 03, 2013 updated at 14:16:34 (UTC)
Goto Top
also wir stellen software für bekleidungsunternehmen her und haben grade eine "offlineversion" unserer software fertiggestellt.

diese ist für bekleidungsvertreter die laut hier gängiger meinung meistens nicht so sehr die "computerspezis" sind.

wenn die jetzt java, mysql (installieren und configurieren), unsere software, odbc connector usw usf installieren sollen dann bekommen die sicherlich probleme damit.

also installiere ich die software automatisch.

laut chef gibts keine probleme wenn java mehrfach in verschiedenen versionen auf einem rechner existiert, bei mysql schon!

und da wir nicht ohne vorher zu fragen bestehende programme funktionsuntüchtig machen wollen installieren wir es lieber nicht, dann geht zwar unser programm nicht aber das kann man auf nachfrage dann ja beheben.

batch ist die vorgabe vom chef...

wenn ich unter hklm schaue steht dort nichts von mysql, unter hkcu schon (und der eintrag wird bei deinstallation auch entfernt).
Member: Nr60730
Nr60730 Jan 03, 2013 updated at 16:47:47 (UTC)
Goto Top
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
Member: simonSayz
simonSayz Jan 03, 2013 at 15:04:53 (UTC)
Goto Top
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 ;)
Member: Nr60730
Nr60730 Jan 03, 2013 updated at 15:39:22 (UTC)
Goto Top
Zitat von @simonSayz:
wo steht das denn bitte?
Das steht im kleinen grossen 1*1 der softwareverteilung oder im path
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?
Member: Nr60730
Nr60730 Jan 03, 2013 updated at 15:59:38 (UTC)
Goto Top
Zitat von @simonSayz:
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

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?
/kcode Tags sind was feines
(vielleicht, macht es das oben geschriebene einfacher für dich) face-wink

Gruß
Member: simonSayz
simonSayz Jan 03, 2013 at 16:21:55 (UTC)
Goto Top
da ich systemintegrator bin und kein anwendungsentwickler sagt mir das oben nicht viel....

http://technet.microsoft.com/de-de/library/cc742028%28v=ws.10%29.aspx

/k Specifies to search in key names only.

ob man jetzt vllt ein level tiefer gehen muss oder ob dafür das prüfen auf "mysql ab" schon reicht weiss ich nicht.
Member: Nr60730
Nr60730 Jan 03, 2013 updated at 16:51:32 (UTC)
Goto Top
Zitat von @simonSayz:
da ich systemintegrator bin und kein anwendungsentwickler sagt mir das oben nicht viel....

merkwürdig....


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:\>

/k kein K, wie man er/kennen /kann....

ob man jetzt vllt ein level tiefer gehen muss oder ob dafür das prüfen auf "mysql ab" schon reicht weiss ich nicht.

back-to-topNochmal....


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ß
Member: mayho33
mayho33 Jan 09, 2013 updated at 13:49:08 (UTC)
Goto Top
Zitat von @simonSayz:
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 ;)

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