Java, ein Grundpfeiler von Windows PCs, der schnell bröckelt und regelmäßig aktualisiert werden muss. Fast immer installiert und leider oftmals nicht auf dem neuesten Stand, wodurch sehr schnell sehr große Sicherheitslücken entstehen können; denn Java wird gerne von Exploits ausgenutzt.
Ein flexible, schnell konfigurierte und scriptbasierte Java Verteilung soll dieses Problem und den damit verbundenen Aufwand auf ein Minimum reduzieren.
Bei dieser wird ein Startscript im AD auf den Zielcomputern, die vom Clientfilter akzeptiert werden, Java sowohl in der 32bit als auch in der 64bit Version installieren.
Die Installation beider Bit-Varianten ist notwendig, da die meisten Browser immernoch ausschließlich als 32bit Fassung existieren. Ein 32bit Browser würde selbst auf einem 64bit System mit installiertem 64bit Java keine existierende Java Installation finden.
Der Aufbau
Bei einem neuen Java Update werden die beiden .exe Installer benötigt, diese müssen entsprechend dem Muster im Bild umbenannt werden. Abschließend müssen noch 2 Zeilen im Script angepasst werden. Das ist der komplette „Aufwand“, wenn ein neues Java Update veröffentlicht wird.
Das Script
Stand: 13.3.2015 (Java 8u31), working
@echo on & Color 9f & setlocal set wd=\\lea\Deployment\Software\Flash set log=%wd%\flash-log.txt REM --- Version hier ändern --- set version=16.0.0.305 REM --------------------------- set tools=\\lea\Deployment\Sonstiges\tools set flashieEL=999 set flashplEL=999 set combinedEL=999 set versionEL=999 set instversion=000 set retry=0 REM Clientfilter: nur die Computer aus der allowedPCs.txt dürfen installieren ::for /f %%f in (%wd%\allowedPCs.txt) do if "%computername%"=="%%f" goto check ::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 :check REM check installed version for /f "tokens=1,2,3 delims= " %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\FlashPlayerPlugin" /v "Version"^|findstr "Version"') do set instversion=%%c if "%instversion%"=="000" goto install %tools%\VersionCompare.exe %instversion% %version% set versionEL=%errorlevel% if "%versionEL%"=="-1" goto install if "%versionEL%"=="0" echo %date% %time:~0,8% - %computername% hat bereits %instversion% installiert >> %log% & goto end if "%versionEL%"=="1" echo %date% %time:~0,8% - %computername% hat bereits %instversion% (neu) installiert >> %log% & goto end :install echo %date% %time:~0,8% - %computername% (%instversion%) startet die Installation... >> %log% start /w %wd%\flash-%version%_IE.exe -install set flashieEL=%errorlevel% start /w %wd%\flash-%version%_OTHER.exe -install set flashplEL=%errorlevel% if %flashieEL%==1618 goto retry REM msiexec process in use, installation already in progress if %flashieEL%==1602 goto retry REM user canceled installation if %flashieEL%==1603 goto retry REM fatal error, some use it for "already installed" (eg. java) if %flashplEL%==1618 goto retry REM msiexec process in use, installation already in progress if %flashplEL%==1602 goto retry REM user canceled installation if %flashplEL%==1603 goto retry REM fatal error, some use it for "already installed" (eg. java) if %flashieEL%==1041 echo %date% %time:~0,8% - %computername% strange 1041 open browser fail, end >> %log% & goto end if %flashplEL%==1041 echo %date% %time:~0,8% - %computername% strange 1041 open browser fail, end >> %log% & goto end set combinedEL=%flashieEL%%flashplEL% echo %date% %time:~0,8% - %computername% hat die Installation von %version% abgeschlossen, errorlevel: %combinedEL% >> %log% goto finish :retry if %retry%==1 goto retryfailed echo %date% %time:~0,8% - %computername% hat nicht Errorlevel 00 erreicht, retry in 200Sek... >> %log% set retry=1 ping localhost -n 200 > nul goto install :retryfailed echo _!_ %date% %time:~0,8% - %computername% hat die Installation abgebrochen, RETRY FAILED! EL: %flashieEL% %flashplEL% >> %log% goto end :finish REM copy flash config file for silent background updates if "%processor_architecture%"=="x86" xcopy "%wd%\mms.cfg" "%systemroot%\System32\Macromed\Flash" /y & goto end xcopy "%wd%\mms.cfg" "%systemroot%\SysWOW64\Macromed\Flash" /y xcopy "%wd%\mms.cfg" "%systemroot%\System32\Macromed\Flash" /y goto end :end endlocal exit
Danke für die geniale Artikelserie zum scriptbasierten Deployment.
Ich versuche gerade das Script für unsere Anforderungen anzupassen. Kann es sein, dass im Abschnitt CHECK in Zeile 30 die Unterscheidung 32-/64-bit fehlt? Der abgefragte Registry-Schlüssel funktioniert nur bei 32-bit Windows. Für 64-bit fehlt ein „Wow6432Node“ im Schlüssel.
Hallo Thomas,
an sich ist das richtig.
Ich glaube das ist bei mir so, dass ich schon immer die 32bit Version von Java auf den Maschinen verteile, unabhängig von der Systemversion. Funktioniert genauso, spart aber einiges an Überprüfungen und doppeltes Installer-handling.
Wir nutzen Java, so wie vermutlich 98% der Windows Nutzer, so gut wie gar nicht, da macht der Fakt, dass auf den 64bit Systemen 32bit Java installiert ist, kaum einen Unterschied.
Aber man kann natürlich einen ordentlichen 64bit Switch einbauen, den sowohl beim Prüfen der Version als auch beim Installieren von Java anwenden und dann ist auf den Systemen auch die korrekte Java Version installiert.
auch hier steckt mehr flash als java drin – *twinkle*