automatisierte silent Netzwerk-Installation von GIMP mit Batch Startscript

Ich bin vielleicht nicht der einzige und letzte Admin, der GIMP im Netzwerk silent, mit Logs via Batch installieren möchte. Also halte ich das hier kurz fest.

Ziel:

GIMP 2.6.11 soll in einer Domäne via Batch Startscript installiert werden, ohne dass der Nutzer etwas davon mitbekommt und diese Installation beeinflussen (z.B. verhindern) kann. Dabei sollen Logs erstellt werden. Für jeden ausführenden Computer wird eine Logdatei erstellt und falls auf einem Computer die Installation fehlschlägt wird zusätzlich eine ausführliche Logdatei der GIMP Installation zur Verfügung stehen.
Zusätzlich wird die Verteilung mit Hilfe von Clientfiltern gesteuert (natürlich optional).

Zuerst die coolste Info:

gimp-installer.exe /?

Die GIMP Entwickler haben eine Dokumentation zu Parametern, Fehlercodes und anderen Optionen in den Installer gepackt. Daraus lässt sich eine zuverlässige Installation basteln.

Die installer.bat:

@echo off
cls
title GIMP Installer
set wd=\\huiqb38c.user.hu-berlin.de\IQBInstitut\System\Sonstiges\GIMP
set chkd=\\huiqb38c.user.hu-berlin.de\IQBInstitut\System\Sonstiges\GIMP\checkdirs\%computername%
set log=\\huiqb38c.user.hu-berlin.de\IQBInstitut\System\Sonstiges\GIMP\logs\%computername%.txt
:: predef vars
set done=0
set gimpel=9999
set /a run=0

if exist %chkd% set done=1 & goto end

REM Clientfilter: nur die Computer aus der allowedPCs.txt dürfen installieren
for /f %%f in (%wd%\allowedPCs.txt) do if "%computername%"=="%%f" goto install
goto end

REM Clientfilter: die Computer aus der deniedPCs.txt dürfen nicht installieren
::for /f %%f in (%wd%\deniedPCs.txt) do if "%computername%"=="%%f" goto end

:install
set /a run=%run%+1
if "%run%"=="2" echo %date% %time% - Zweiter Versuch >> %log%
echo %date% %time% - Installation startet >> %log%
%wd%\gimp2611.exe /verysilent /norestart /nocancel /suppressmsgboxes /restartexitcode=3010 /log="%log%.log" /mergetasks="!desktopicon"
set gimpel=%errorlevel%

if "%gimpel%"=="0" md %chkd% & del /f /q %log%.log & echo %date% %time% - Installation erfolgreich abgeschlossen >> %log%
:: if "%gimpel%"=="3010" md %chkd% & del /f /q %log%.log & shutdown -r -f -t 120 -c "Um die GIMP Installation erfolgreich abzuschliessen muss der Computer neugestartet werden. Der Computer wird in 120 Sekunden neugestartet!"
if "%gimpel%"=="3010" md %chkd% & del /f /q %log%.log & echo %date% %time% - Installation abgeschlossen, 3010 - Restart eigentlich notwendig. >> %log%
if "%run%"=="2" echo %date% %time% # 2. Installationsversuch ebenfalls fehlgeschlagen, Fehlercode %gimpel% >> %log% & goto end
if "%gimpel%"=="1" echo %date% %time% # EL 1 - Initialisierung fehlgeschlagen, warte 600 Sekunden... >>%log% & ping 127.0.0.1 -n 600 >>nul & goto install
if "%gimpel%"=="2" echo %date% %time% # EL 2 - Abbruch durch den User, warte 600 Sekunden... >>%log% & ping 127.0.0.1 -n 600 >>nul & goto install
if "%gimpel%"=="4" echo %date% %time% # EL 4 - Install Error, warte 600 Sekunden... >>%log% & ping 127.0.0.1 -n 600 >>nul & goto install
if "%gimpel%"=="5" echo %date% %time% # EL 5 - Install Error, warte 600 Sekunden... >>%log% & ping 127.0.0.1 -n 600 >>nul & goto install
if "%gimpel%"=="9999" echo %date% %time% # hier ist etwas schief gelaufen... >> %log%

:end
if "%done%"=="1" echo %date% %time% - Bereits installiert >> %log%

Anpassungen:

In Zeile 4-6 natürlich die Serverpfade anpassen.
Der Clientfilter (siehe Zeile 14 bis 19) ist natürlich optional. Aktiviert Zeile 15 und 16 oder Zeile 19 für den gewünschten Effekt.
Je nach Clientfilter ist noch eine allowedPCs.txt oder eine deniedPCs.txt nötig. In dieser steht pro Zeile 1 Computername.
Die Parameter des Installers in Zeile 25 können selbstverständlich den eigenen Bedürfnissen angepasst werden. Siehe dazu die

installer.exe /?

Dokumentation (siehe oben).
Zeile 29 und 30 behandeln den Fall, wenn der Installer nach der Installation neustarten möchte. Zeile 29 startet den Rechner dann nach 2 Minuten automatisch neu und zeigt vorher eine Meldung an. Zeile 30 ignoriert das Verhalten und trägt es nur vollständigkeitshalber in die Logdatei ein.

Logs und Checkdirs:

Der Installer legt im Ordner \logs\ für jeden ausführenden Computer 1 Logdatei ab. Diese enthält bei einer erfolgreichen Installation beispielsweise folgenden Inhalt:
01.08.2011 18:14:01,26 – Installation startet
01.08.2011 18:15:26,59 – Installation erfolgreich abgeschlossen

Schlägt die Installation fehl wird in diesem Ordner eine zusätzliche Datei [computername].txt.log zur Verfügung stehen, in der ausführliche Debug Informationen des Installers gelistet sind. Zusätzlich steht in der [computername].txt eine Kurzbeschreibung des Fehlers.

Anhand des Checkdirs erkennt das Script, ob es bereits ausgeführt wurde. Dieses leere Verzeichnis wird nur bei den Fehlercodes 0 (erfolgreich) und 3010 (erfolgreich mit Neustart) erstellt.

Sowohl für die Logs als auch für die Checkdirs muss das ausführende Objekt Schreibzugriff auf diesen Serverordner haben. Beim Startscript das Computerobjekt, beim manuellen Ausführen das Benutzerobjekt.

Schreibe einen Kommentar