KeePass 2 Deployment im Windows AD

Neu in meiner Software-Deployment Auflistung ist ab jetzt KeePass 2, eine ziemliche gute und erweiterbare Passwortmanagement-Freeware.
Zu KeePass selbst werde ich in Zukunft noch einige Artikel schreiben, von der Installation bis zur Integration in Browser und Smartphone. Jetzt erstmal schnell das Deployment im Windows Active Directory via Batch Script, im üblichen Stil.

Vorbereitung

Das Bild zeigt die vielen Deploymentparameter und -optionen des KeePass 2 InstallersDer .exe Installer von der Homepage (Pro Version) liefert beim Aufruf mit dem Parameter „/?“ eine lange Liste von Optionen zur Anpassung der Installation. Diese findet ihr hier auch nochmal zur besseren Lesbarkeit in HTML Form.
Praktisch: Ihr könnt mit allen Parametern die Installation anpassen und bei der ersten Installation mit dem Parameter /SAVEINF=filename das Set an Optionen in eine Konfigurationsdatei speichern. Für die nächste Installation reicht als Parameter dann nur noch /LOADINF. So lassen sich beispielsweise unterschiedliche Deploymentprofile erstellen und nutzen.

Plugins

Eine der Stärken von KeePass ist die starke Erweiterbarkeit mit Hilfe der vielen Plugins und Tools. Die Installation und Verteilung ist bei fast allen relativ einfach: es reicht schon die entsprechende Plugin-Datei (z.B. .plgx) in das Programmverzeichnis zu legen, ggf. auch in einen seperaten „plugins“ Unterordner für eine verbesserte Übersicht. Beim nächsten Start von KeePass wird das Plugin automatisch erkannt und geladen.
Aus diesem Grund kopiert das Deployment-Script benötigte Plugins einfach nur in den Installationsordner – fertig!

Deployment

Aktuell: Version 2.34 via .exe
Das im Skript verwendete Programm VersionCompare ist eine Eigenprogrammierung und hier als Download verfügbar.

Code anzeigenDen Code könnt ihr bequem mit den Links/Rechts Pfeiltasten horizontal bewegen.

@echo off && color 9f && setlocal

set wd=\\lea\Deployment\Software\KeePass
set log=%wd%\keepass.log
set tools=\\lea\Deployment\Sonstiges\tools
set instversion=0.0
set versionEL=9
set regEL=999
set exepath=none
set retry=0

REM:: ######## EDIT THIS ####
set newversion=2.34
REM:: #######################

REM:: Clientfilter: nur die Computer aus der allowedPCs.txt dürfen installieren
REM::for /f %%f in (%wd%\allowedPCs.txt) do if "%computername%"=="%%f" goto check
REM::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)\KeePass2\KeePass.exe" set exepath="c:\Program Files (x86)\KeePass2\KeePass.exe"
if exist "c:\Program Files\KeePass2\KeePass.exe" set exepath="c:\Program Files\KeePass2\KeePass.exe"
if %exepath%==none goto install
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 install
if "%versionEL%"=="0" echo %date% %time:~0,8% - %computername% hat bereits %instversion% installiert >> %log% & goto plugins
if "%versionEL%"=="1" echo %date% %time:~0,8% - %computername% hat bereits %instversion% (neuer) installiert >> %log% & goto plugins

:install
echo %date% %time:~0,8% - %computername% installiert... >> %log%
TASKKILL /f /im KeePass.exe
start /w %wd%\KeePass-%newversion%.exe /VERYSILENT /SP- /SUPPRESSMSGBOXES /LOG="logs/%computername%.log" /NORESTART /CLOSEAPPLICATIONS /SAVEINF="standardsetup.inf" /DIR="%ProgramFiles%\KeePass2" /GROUP="KeePass 2"
set kpel=%errorlevel%
if %kpel%==1618 goto retry REM:: msiexec process in use, installation already in progress (eg. windows updates running)
if %kpel%==1602 goto retry REM:: user canceled installation (eg. taskkill)
if %kpel%==1603 goto retry REM:: fatal error, some use it for "already installed" (eg. java)
if %kpel%==1638 goto retry REM:: another product is already installed, denies an update
echo %date% %time:~0,8% - %computername% hat Version %newversion% mit EL %kpel% abgeschlossen >> %log%
goto plugins

:plugins
REM:: copy plugins
if exist "c:\Program Files (x86)\KeePass2\KeePass.exe" xcopy /Y /S /I "%wd%\plugins" "c:\Program Files (x86)\KeePass2\plugins"
if exist "c:\Program Files\KeePass2\KeePass.exe" xcopy /Y /S /I "%wd%\plugins" "c:\Program Files\KeePass2\plugins"
goto end

:retry
if %retry%==1 goto retryfailed
echo %date% %time:~0,8% - %computername% hatte den Fehler %kpel%, retry in 500Sek... >> %log%
set retry=1
REM:: 5 Minuten warten
ping localhost -n 500 > nul
goto install

:retryfailed
echo _!_ %date% %time:~0,8% - %computername% hat die Installation abgebrochen, RETRY FAILED! >> %log%
goto end

:end
endlocal
exit

Schreibe einen Kommentar