HipChat Deployment im Windows AD mit Batch

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

Das Bild zeigt das HipChat Deployment Verzeichnis mit seinen üblichen DateienDer 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 die Logausgaben des HipChat-Deployments
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.

Schreibe einen Kommentar