Meine letzten Posts zum Firefox Script Deployment sind schon etwas älter: 17.0.2, 9.0, 8.0.1.
Sie beschreiben die zugrundeliegende Technik, mit der Firefox verteilt werden kann.
Update 19.09.2016: aktualisiertes Script beachtet jetzt die beiden verfügbaren 32/64bit-Architekturen von Firefox und updatet die installierte Architektur passend. Dafür müssen beide Installer in dem Format „Firefox48.0.2-32.exe“ und „Firefox48.0.2-64.exe“ vorliegen.
Info: Das im Skript verwendete Programm VersionCompare ist eine Eigenprogrammierung und hier als Download verfügbar.
Firefox 47.0.1
Das Installationsscript:
@echo off & Color 9f & setlocal set wd=\\lea\Deployment\Software\Firefox set log=%wd%\firefox.log set tools=\\lea\Deployment\Sonstiges\tools set instversion=0.0 set updateretry=0 set retry=0 set versionEL=9 set instEL=999 REM:: ######## EDIT THIS #### set newversion=48.0.2 REM:: ####################### 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:: prüfe ob eine 32bit Version von Firefox schon installiert ist for /f "tokens=1,2,3 delims= " %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox" /v "CurrentVersion"^|findstr "CurrentVersion"') do set instversion=%%c REM:: falls keine 32bit Version von Firefox gefunden wurde, prüfe 64bit if "%instversion%"=="0.0" for /f "tokens=1,2,3 delims= " %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Mozilla\Mozilla Firefox" /v "CurrentVersion"^|findstr "CurrentVersion"') do set instversion=%%c REM:: Wenn Version nicht gleich: vergleiche Versionen mit dem Versionchecker %tools%\VersionCompare.exe %instversion% %newversion% 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% (neuer) installiert >> %log% & goto end :install if "%processor_architecture%"=="AMD64" goto inst64 echo %date% %time% - %computername% (%instversion%) installiert %newversion% (32bit)... >> %log% taskkill /F /IM firefox.exe ping localhost -n 4 "%wd%\Firefox%newversion%-32.exe" -ms goto cont :inst64 echo %date% %time% - %computername% (%instversion%) installiert %newversion% (64bit)... >> %log% taskkill /F /IM firefox.exe ping localhost -n 4 "%wd%\Firefox%newversion%-64.exe" -ms goto cont :cont set instEL=%errorlevel% if %instEL%==1618 goto retry REM:: msiexec process in use, installation already in progress (eg. windows updates running) if %instEL%==1602 goto retry REM:: user canceled installation (eg. taskkill) if %instEL%==1603 goto retry REM:: fatal error, some use it for "already installed" (eg. java) ::if %instEL%==1638 goto uninstall REM:: another product is already installed, denies an update echo %date% %time% - %computername% Installation abgeschlossen, Errorlevel %instEL% >> %log% goto settings :settings REM:: Install 32-bit customisations if exist "%programfiles%\Mozilla Firefox\" copy /Y "%wd%\override.ini" "%programfiles%\Mozilla Firefox\" if exist "%programfiles%\Mozilla Firefox\" copy /Y "%wd%\mozilla.cfg" "%programfiles%\Mozilla Firefox\" if exist "%programfiles%\Mozilla Firefox\" copy /Y "%wd%\local-settings.js" "%programfiles%\Mozilla Firefox\defaults\preferences" REM:: Install 64-bit customisations if exist "%ProgramFiles(x86)%\Mozilla Firefox\" copy /Y "%wd%\override.ini" "%ProgramFiles(x86)%\Mozilla Firefox\" if exist "%ProgramFiles(x86)%\Mozilla Firefox\" copy /Y "%wd%\mozilla.cfg" "%ProgramFiles(x86)%\Mozilla Firefox\" if exist "%ProgramFiles(x86)%\Mozilla Firefox\" copy /Y "%wd%\local-settings.js" "%ProgramFiles(x86)%\Mozilla Firefox\defaults\preferences" goto end :retry if %retry%==1 goto retryfailed echo %date% %time:~0,8% - %computername% hatte den Fehler %instEL%, retry in 5min... >> %log% set retry=1 REM:: 5 Minuten warten ping localhost -n 300 > nul goto install :retryfailed echo _!_ %date% %time:~0,8% - %computername% hat die Installation abgebrochen, %instEL%, RETRY FAILED! >> %log% goto end :uninstall if %retry%==1 goto retryfailed echo %date% %time:~0,8% - %computername% deinstalliert Version %instversion% aufgrund EL 1638 Fehler... >> %log% taskkill /F /IM firefox.exe start /w "%programfiles%\Mozilla Firefox\uninstall\helper.exe" -ms start /w "%programfiles(x86)%\Mozilla Firefox\uninstall\helper.exe" -ms echo %date% %time:~0,8% - %computername% - %instversion% fertig deinstalliert, retry... >> %log% set retry=1 goto install REM:: Removes Firefox Desktop Icon - Windows XP ::if exist "%allusersprofile%\Desktop\Mozilla Firefox.lnk" del "%allusersprofile%\Desktop\Mozilla Firefox.lnk" /S REM:: Removes Firefox Desktop Icon - Windows 7 ::if exist "C:\Users\Public\Desktop\Mozilla Firefox.lnk" del "C:\Users\Public\Desktop\Mozilla Firefox.lnk" :end endlocal exit
Datei install.ini hatte ich in den letzten Posts immer noch mit drin. Ich glaube jedoch, dass die Datei gar nicht mehr benutzt wird und habe sie mittlerweile aus meiner Verteilung entfernt.