simonsayz
Goto Top

Batchscript zur Installation mehrerer Programme

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.

Wenn ich nun die Installation ausführen will per rechtsklick und ausführen als Admin, so sehe ich folgende Fehlermeldungen im cmd Fenster (und einen "Fehler" gleich doppelt):

-Der Befehl "else" ist entweder falsch geschrieben oder konnte nicht gefunden werden.

-Der Befehl ""C:\Users\Prodata_User\Desktop\prodress mobil\install.bat"\" ist entweder falsch geschrieben oder konnte nicht gefunden werden.

Diese "Fehlermeldung" bekomme ich insgesamt 5 Mal , die Installation läuft aber dennoch durch!? Gibt es eine Möglichkeit diese Fehler abzustellen bzw "unsichtbar" zu machen so dass der Anwender sie nicht sieht?

Als zusätliche Aufgabenstellung habe ich noch bekommen:

Programme sollen nur installiert werden wenn sie noch nicht installiert sind bzw nicht up2date, wie frage ich das ab?

REM Hier wird überprüft ob das Programm als Admin ausgeführt wird

@echo off
fsutil fsinfo drives %2>NuL
IF %errorlevel% equ 1 goto NOADMIN
else goto START

:START

REM Hier wird Java im passiven Modus installiert, die Zeilen vorher werden benötigt da man ja nicht
REM weiss wo der Anwender nachher den Ordner speichert und die msi sonst nicht gefunden werden kann. REM Passive ist ein Schalter der bei .msi Installationen genutzt werden kann.

%0\
cd %0\..
cd /d %0\..

start /wait "" jre1.7.0_09.msi /passive

REM Hier wird Prodress im stillen Modus installiert, die Zeilen vorher werden benötigt da man ja nicht
REM weiss wo der Anwender nachher den Ordner speichert und die exe sonst nicht gefunden werden kann.
REM Dir gibt den Installationspfad an. In diesem Fall sind passive und dir Schalter von inno setup.

%0\
cd %0\..
cd /d %0\..

start /wait "" Prodress@Net_Server.exe /silent /sp- /DIR=C:\progra~1\Prodress@Net_Server

REM Hier wird MySQL im passiven Modus installiert, die Zeilen vorher werden benötigt da man ja nicht
REM weiss wo der Anwender nachher den Ordner speichert und die jre1...msi sonst nicht gefunden werden REM kann. Passive ist ein Schalter der bei .msi installationen genutzt werden kann.

%0\
cd %0\..
cd /d %0\..

start /wait "" mysql-5.5.28-win32.msi /passive

REM Da bei einer passiven Installation von MySQL keine My.ini geschrieben wird muss diese noch in das
REM entsprechende Verzeichnis kopiert werden. Da man allerdings nicht weiss ob der Anwender die
REM Installation auf einem 32 oder 64 bit System ausführt sind für beide fälle Kopierbefehle
REM vorhanden. Die my.ini welche kopiert wird liegt im selben Ordner wie das Script.
REM /r /y /q sind Schalter von xcopy

%0\
cd %0\..
cd /d %0\..

xcopy "%cd%\my.ini" "C:\Program Files (x86)\MySQL\MySQL Server 5.5" /r /y /q

REM Dies ist der Part fürs kopieren der my.ini in einem 32 Bit Betriebssystem.

%0\
cd %0\..
cd /d %0\..

xcopy "%cd%\my.ini" "C:\Program Files\MySQL\MySQL Server 5.5" /r /y /q

exit

:NOADMIN
echo Please run this program as administrator!
pause

Content-Key: 196019

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

Printed on: April 20, 2024 at 08:04 o'clock

Member: Freund.der.Nacht
Freund.der.Nacht Dec 18, 2012 at 16:12:13 (UTC)
Goto Top
Hallo simonSayz,

zur Fehlermeldung mit "else": Du hast einen Syntax-Fehler.
Richtig wäre:

@echo off
fsutil fsinfo drives %2>NuL
if %errorlevel%==1 (
echo Please run this program as Administrator!
pause > nul
exit
) else (
goto START
)

Was mir hier nicht ganz einleuchtet, ist, warum du alle Laufwerke auflisten lässt.

Die Fehlermeldung kannst du unterdrücken, wenn du hinter die Kopierbefehle " > nul" schreibst. Auch wenn das Unterdrücken sicherlich nicht die beste Lösung ist.

MfG
Batch-Lord
Member: bastla
bastla Dec 19, 2012 at 00:33:25 (UTC)
Goto Top
@ Batch-Lord
Was mir hier nicht ganz einleuchtet, ist, warum du alle Laufwerke auflisten lässt.
Gemeint sein dürfte
fsutil fsinfo drives >nul 2>nul || goto :NOADMIN
- die Ausgabe der Laufwerke ist uninteressant, aber da "fsutil" mit Adminrechten ausgeführt werden muss, lässt ein Errorlevel <> 0 darauf schließen, dass der Batch nicht als Admin ausgeführt wurde.
@ simonSayz
Von
%0\
cd %0\..
cd /d "%~f0\.."  
ist nur die letzte Zeile sinnvoll (und auch die nur ein einziges Mal vor der ersten Programminstallation), die ersten beiden kannst Du ersatzlos streichen ...

Grüße
bastla
Member: simonSayz
simonSayz Dec 19, 2012 updated at 08:16:28 (UTC)
Goto Top
danke ich werde mein script mal anpassen face-smile

bastla, ich habe online das hier

cd /d %0\..

gefunden,du schlägst

cd /d "%~f0\.."

vor.

Ist das ein "schreibfehler" oder ein anderer befehl?
Member: bastla
bastla Dec 19, 2012 at 08:08:21 (UTC)
Goto Top
Hallo simonSayz!
Ist das ein "schreibfehler" oder ein anderer befehl?
Gegenfrage: Was hat Dein Test dazu ergeben? face-wink

Um aber doch auch zu antworten: Ist nur eine genauere Schreibweise (insbesondere berücksichtigen die Anführungszeichen die Möglichkeit, dass sich im Pfad Leerzeichen befinden) ...

Grüße
bastla
Member: simonSayz
simonSayz Dec 19, 2012 updated at 08:26:02 (UTC)
Goto Top
Vielen Dank!
Ich steh bei manchen Problemen echt wie der sprichwörtliche "ochs vorm berge"...

Heut sind nochmal Aufgaben hinzugekommen und ich hab zeit bis ende des Jahres :/

Jetzt muss ich erstmal noch sicherstellen das Java und co nur installiert werden wenn nicht in einer bestimmten Version vorhanden...

Bin über jede weitere Hilfe dankbar ;)
Member: simonSayz
simonSayz Dec 19, 2012 updated at 10:43:35 (UTC)
Goto Top
also auch wenn ich damit nicht ganz einverstanden bin:

man sagte ich solle in der registry schauen ob das entsprechende programm bereits installiert ist und wenn ja den entsprechenden teil des scriptes überspringen .
(ja ich weiss das ein vorhandener reg-eintrag nicht heissen muss das die software auch wirklich installiert ist...)

schaue ich nun unter HKEY_LOCAL_MACHINE\SOFTWARE so finde ich keine einträge für java / mysql.

bemühe ich die suchfunktion von regedit so werden mir einige einträge gezeigt...aber keine pfade zu diesen...

könnt ihr mir vielleicht helfen?