Flash ist eine weitere Standardsoftware auf den meisten Windows PCs, die regelmäßig aktualisiert werden muss. Also wieder ein Fall für eine Verteilung im Netzwerk. Nach den letzten Deployments [Skype, Java, Reader (Update), Firefox/Thunderbird (Update)] ist die Verteilung von Flash fast ein Kinderspiel.
Anmerkungen
Wie üblich wird zuerst die Version aus der Registry gelesen, überprüft und schlussendlich erfolgt die Installation .exe Dateien:
start /w flash-%version%_IE.exe -install start /w flash-%version%_OTHER.exe -install
Achtung: Flash muss in 2 verschiedenen Ausführungen installiert werden. Auf der Downloadseite ist die Rede vom Internet Explorer und „Plug-In basierten Browsern“; also praktisch allen anderen Browsern. Daher 2 aufeinanderfolgende Installationen.
In 99% der Fälle bereitet die Installation keine Probleme. Für die restlichen 1% habe ich auch in diese Verteilung Fehlererkennung und ein Retry eingebaut. Die Fehler 1618, 1602 und 1603 resultieren in einem erneuten Installationsversuch 5 Minuten später.
Konfiguration
Nach der Installation wird noch eine Konfigdatei kopiert, die Flash mit einigen wenigen Einstellungen versieht.
mms.cfg:
AutoUpdateDisable=1 SilentAutoUpdateEnable=0 SilentAutoUpdateVerboseLogging=0
Die Datei könnt ihr natürlich so anpassen, wie ihr die Einstellungen wollt.
Deployment
Update 19.09.2016: Version 23.0 getestet und läuft.
Info: Das im Skript verwendete Programm VersionCompare ist eine Eigenprogrammierung und hier als Download verfügbar.
flash-installer.bat:
@echo off & Color 9f & setlocal set wd=\\server\Deployment\Software\Flash set log=%wd%\flash-log.txt REM:: --- Version hier ändern --- set version=23.0 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
Anpassungen
In dem Script tragt ihr in Zeile 8 immer die gewünschte Version ein und benennt die Installationsdateien nach folgendem Schema um:
flash-[Version]_IE.exe (z.B. flash-21.0_IE.exe)
flash-[Version]_OTHER.exe (z.B. flash-21.0_OTHER.exe)
Die Verteilung besteht wie üblich aus den üblichen Verteilungsdateien, eurer angepassten Konfigurationsdatei mms.cfg und den umbenannten Installationsdateien.
Weiterführende Links:
Flash Downloads for Deployment
Ivan Dretvic’s Guide zu Flash 11 Deployment via GPO / 11.2 with auto-update
Adobe Flash Player Administration Guide