Auch dieser Artikel reiht sich in die Liste der Software-Batch-AD-Deployment-Guides ein.
Im Falle von HipChat wird der Artikel recht kurz, denn hier passiert nichts ungewöhnliches.
Vorbereitung
Der aktuellste HipChat-Installer (für Windows) ist als .exe immer unter dieser URL verfügbar.
Anschließend wird wieder ein übliches Deployment-Verzeichnis auf einem für die PCs verfügbaren Netzlaufwerk erstellt: Installer, Installer-Batch, allowedPCs.txt und deniedPCs.txt (mehr Informationen zum Clientfilter hier). Im Standardfall (so auch in diesem Deployment-Script) wird die deniedPCs.txt benutzt, um einzelne Clients von der Verteilung auszuschließen. Die Textdatei muss dann Computernamen enthalten, einen pro Zeile.
Der HipChat-Installer muss folgendermaßen umbenannt werden: „HipChat_[Version].exe“ und der Versionsstring muss in das Deployment-Script in Zeile 11.
Deployment-Script
19.09.2016: Version 4.27.1.1658 getestet und verteilt.
Hinweis: Wer nicht nur ein Update sondern eine komplette Reinstallation von Hipchat im Netzwerk ausrollen will, kann mein angepasstes Script – hier als Download – nutzen. Die benötigte VersionCompare.exe erhaltet ihr hier.
Hier das Script für ein normales Update:
@echo off && color 9f && setlocal set wd=\\lea\Deployment\Software\Hipchat set log=%wd%\hipchat.log set tools=\\lea\Deployment\Sonstiges\tools set hipEL=999 set instversion=0.0 set versionEL=9 set exepath=none set retry=0 REM:: ######## EDIT THIS #### set newversion=4.1658 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 if exist "C:\Program Files (x86)\Atlassian\HipChat4\HipChat.exe" set exepath="C:\Program Files (x86)\Atlassian\HipChat4\HipChat.exe" ::if exist "c:\Program Files (x86)\Skype\Phone\skype.exe" set exepath="c:\Program Files (x86)\Skype\Phone\skype.exe" if %exepath%==none echo %date% %time:~0,8% - %computername% findet das .exe Verzeichnis nicht && goto taskkill goto checkversion :checkversion for /f "tokens=1-3" %%i in ('%tools%\sigcheck %exepath%') do ( if "%%i %%j"=="File version:" set instversion=%%k ) %tools%\VersionCompare.exe %instversion% %newversion% set versionEL=%errorlevel% if "%versionEL%"=="-1" goto taskkill 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 goto end :taskkill TASKKILL /f /im hipchat.exe goto install :install echo %date% %time:~0,8% - %computername% installiert... >> %log% ::msiexec.exe /i %wd%\deploy\%newversion%\SkypeSetup.msi /qn /norestart FEATURE_IEPLUGIN=0 FEATURE_FFPLUGIN=0 start /w %wd%\HipChat_%newversion%.exe /verysilent /norestart /restartapplications /lang=german /lang=1031 /64 /64bit /x64 set hipEL=%errorlevel% if %hipEL%==1618 goto retry REM:: msiexec process in use, installation already in progress (eg. windows updates running) if %hipEL%==1602 goto retry REM:: user canceled installation (eg. taskkill) if %hipEL%==1603 goto retry REM:: fatal error, some use it for "already installed" (eg. java) if %hipEL%==1638 goto uninstall REM:: another product is already installed, denies an update if %hipEL%==1625 goto uninstall REM:: skype installer sometimes threw this one, don't know why set hipEL=%errorlevel% echo %date% %time:~0,8% - %computername% hat Version %newversion% mit EL %hipEL% abgeschlossen >> %log% md %wd%\done\%computername% goto end :retry if %retry%==1 goto retryfailed echo %date% %time:~0,8% - %computername% hatte den Fehler %hipEL%, retry in 500Sek... >> %log% set retry=1 REM:: 5 Minuten warten ping localhost -n 500 > nul goto taskkill :retryfailed echo _!_ %date% %time:~0,8% - %computername% hat die Installation abgebrochen, RETRY FAILED! >> %log% goto end :uninstall if %retry%==1 goto retryfailed TASKKILL /f /im hipchat.exe echo %date% %time:~0,8% - %computername% deinstalliert Version %instversion%... >> %log% start /w "" "C:\Program Files (x86)\Atlassian\HipChat4\unins000.exe" /s /silent /qn del /q /s "C:\Program Files (x86)\Atlassian" echo %date% %time:~0,8% - %computername% - %instversion% deinstalliert, retry... >> %log% set retry=1 goto taskkill :end endlocal exit
Und das war’s auch schon. Bei einem Update muss nur die neue .exe-Datei heruntergeladen und die Version in Zeile 11 angepasst werden.
Das Script kommt als Computer-Startscript in das GPO und schon startet die Verteilung:
Das Bild zeigt das Deployment der 1648er Version anhand des allnew-Update-Scripts (siehe Hinweis und Download oben). Dabei wird an jedem PC, unabhängig der installierten Version (deswegen wird überall „Version 0.0“ deinstalliert), HipChat komplett deinstalliert und neu installiert. Beim Umstieg auf 1648 würde ich das empfehlen, weitere Update werden ich auch wieder mit dem normalen Script erledigen.