Unattended Installation / Silent Installation von Windows-basierter Software

06. September 2014

Ziel: Software komplett automatisch auf Arbeitsplatzrechnern installieren

Es ist einfach nervig, bei neuen Versionen der Software-Basis von Rechner zu Rechner zu latschen, um dort irgendwelche Installationen zu starten. Es gibt zwar von Microsoft die Möglichkeit, msi-Pakete per Gruppenrichtlinien zu verteilen, allerdings existiert nicht für jede Software ein msi-Paket und außer­dem muss man beim Erscheinen neuer Versionen msi-Pakete im Gruppen­richt­linien­editor händisch aktualisieren, was einer einfachen Softwareverteilung widerspricht.

Voraussetzungen in Form von Umgebungsvariablen

Wir arbeiten deshalb schon lange an alternativen Lösungen, in den von uns betreuten Netzwerken Software radikal einfach per Copy-Kommando zu verteilen. Diese Methode wird oft auch als XCOPY-Deployment bezeichnet. Die zugehörigen Dateien werden einmal bei uns im Netzwerk getestet und dann per einfachem Dateitransfers in die anderen Netzwerke kopiert. Wir haben im Laufe der Zeit für viele Software-Pakete entsprechende Skripte entwickelt, die wir in der Randleiste rechts zum Download bereitstellen.

Ausgangspunkt sind zwei Gruppenrichtlinienskripte, die auf allen Rechnern der Windows-Domäne beim Start durchlaufen werden und den Systemen bekannt machen, wo sich die Installationsressourcen befinden. Das erste Skript setzt die SERVER-Variable, die in dieser einfachen Beispielkonfiguration den Namen des Domänen-Controllers in der Umgebung der Computer hinterlegt.

rem ---------------------
rem Setzt Server = server
rem ---------------------

rem Exit wenn Variable schon den richtigen Wert hat
if "%SERVER%" == "server" exit

rem Setzen der Umgebngsvariablen
set SERVER=server

rem Das Kommando setx auf dem Rechner lokal verfügbar machen
if not exist %SystemRoot%\system32\setx.exe copy \\%SERVER%\Root\local\bin\setx.exe %SystemRoot%\system32\setx.exe /y

rem Umgebungsvariable aus der lokalen Umgebung entfernen
reg.exe delete HKEY_CURRENT_USER\Environment /v SERVER /f

rem Hinterlegen der Information für alle Benutzer
setx.exe SERVER %SERVER% -m

Nun folgt ein Skript für die FILES-Variable. Diese verweist auf das Verzeichnis, in dem allgemein im Netzwerk verfügbare Dateien gespeichert werden. Unter %FILES%\Tools finden sich dann die Installationsressourcen:

rem ---------------------
rem Variable FILES setzen
rem ---------------------

if "%FILES%" == "\\%SERVER%\Files" exit

setx.exe FILES \\%SERVER%\Files -m

Die eigentlichen Installationsskripte

Der wichtigen Regel aus der Software-Entwicklung "convention over configuration" folgend haben wir festgelegt, dass sich in den Verzeichnissen %FILES%\Tools\<Name der Software>_UI Batch-Skripte mit dem Namen Install.cmd befinden, mit deren Hilfe das entsprechende Softwarepaket auf einem Rechner installiert werden kann. Eine solche Batch-Datei sieht zum Beispiel folgendermaßen aus:

rem ----------------------------------------------------------------------
rem Installiert aktuelle Version des VLC-Players ohne Benutzer-Interaktion
rem ----------------------------------------------------------------------

set AKTVERS=2.1.3
set PROGDIR=%ProgramFiles%\VideoLAN
if not "%ProgramFiles(x86)%" == "" set PROGDIR=%ProgramFiles(x86)%\VideoLAN
set INSTDIR=%FILES%\Tools\VLC_Player_UI
set INDIKATOR=%PROGDIR%\VLCPlayer-%AKTVERS%.txt
set UNINSTALLER=%PROGDIR%\VLC\uninstall.exe

if "%FILES%" == "" goto bad_end

if exist "%INDIKATOR%" goto good_end

:uninstall
if exist "%UNINSTALLER%" call "%INSTDIR%\uninstall.cmd"

:install
"%INSTDIR%\vlc-%AKTVERS%-win32.exe" /S /L=1031 /D="%PROGDIR%"
set EXIT_CODE=%ERRORLEVEL%

del /q "%PUBLIC%\Desktop\VLC media player.lnk"
del /q "%ALLUSERSPROFILE%\Desktop\VLC media player.lnk"
del /q "%HOMESHARE%\Desktop\VLC media player.lnk"

if %EXIT_CODE% == 0 echo >"%INDIKATOR%"

if %EXIT_CODE% == 0 goto good_end

:bad_end
exit /B 1
 
:good_end
exit /B 0

Wir hoffen, dass das obige Installationsskript ohne weitere Erläuterungen verständlich ist. Es wird von dem untenstehenden Einzeiler im Rahmen der Gruppenrichtlinien bei jedem Start der Domänen-Computer aufgerufen. Ist die aktuelle Version installiert, passiert nichts, weil die als Indikator verwendete Datei vorhanden ist. Entscheidend für die einfache Software-Verteilung ist, dass lediglich das Kopieren der neuen Software-Version in das Distributionsverzeichnis eine Aktualisierung auf allen Arbeitsplatzrechner bewirkt.

rem ============================================
rem Installiert aktuelle Version des VLC-Players
rem ============================================

"%FILES%\Tools\VLC_Player_UI\Install.cmd"

In der Leiste rechts stellen wir die von uns im Laufe der Zeit erstellten Skripte der Allgemeinheit zur Verfügung. Über jede Form von Rückmeldung als Kommentar würden wir uns freuen.

Kommentare

Neuen Kommentar schreiben

Acrobat Reader

Da es für uns keine Notwendigkeit gibt, den jeweils aktuellen Hauptversionen des Acrobat Readers zu folgen, sind wir derzeit bei der Version 10 stehengeblieben und installieren lediglich die jeweils aktuellen Patches. Die von uns verwendete Hauptversion ist die Version 10.1.0. Um an die zugehörige msi-Datei zu gelangen, lädt man die Datei AdbeRdr1010_de_DE.exe aus dem Internet herunter und extrahiert die darin enthaltenen Installationsdateien. Dies macht die Batch-Datei msi_Dateien_Extrahieren.cmd im untenstehenden Archiv. Das Batch-Programm Install.cmd führt die Installation der Hauptversion durch. Danach werden nur noch die jeweiligen Patches heruntergeladen und mit Hilfe des Skriptes InstallPatches.cmd installiert.

Adobe Flash Player

Diese Software würde man natürlich gerne komplett von den Rechnern verbannen. Leider ist es noch nicht so weit. Früher gab es oft Fehler bei der Installation von Updates. Heute installieren wir einmal eine nicht zu alte Version und aktivieren dann skriptgesteuert die automatische Update-Funktion. Seitdem ist Ruhe.

Audacity

In dem nachfolgend zum Download bereitgestellten zip-Archiv finden sich die beiden Batch-Skripte zur automatischen Installation von Audacity sowie eine Anleitung in Form einer PDF-Datei, die uns bei der Erstellung des Skriptes geholfen hat.

Google Chrome

Damit nicht jeder Benutzer den Chrome-Browser in seiner lokalen Umgebung installiert, ist es sinnvoll, dieses einmalig auf jedem Rechner zu tun. Es gibt zu diesem Zweck von Google ein spezielles msi-Paket. Ein Download-Link für dieses msi-Paket sowie die beiden Installations­skripte gemäß der links stehenden Beschrei­­­bung finden sich in dem nachfolgend zum Download bereitgestellten zip-Archiv.

Man installiert Chrome einmalig. Danach werden Updates automatisch nachgeladen. Für größere Netzwerke ist es wohl sinnvoll, die Chrome-Updates einmalig herunterzuladen und über das Intranet zu verteilen. Wenn wir eine Lösung für diese Anforderung haben, werden wir sie hier veröffentlichen.

Irfan View

Dieses beliebte Programm lässt sich Gott sei Dank leicht automatisch installieren. In dem untenstehenden Archiv findet sich gemäß der links beschriebenen Konvention das Skript Install.cmd, in dem sich weitere Informationen zu den verfügbaren Optionen des Installers finden.

» IrfanView.zip

Java JRE

Die Java-Runtime-Umgebung lässt sich ebenfalls leicht per Batch-Job installieren und updaten. Im Batch-Skript Install.cmd, das sich im untenstehenden zip-Archiv befindet, wird gezeigt, wie das geht.

Movie Maker

Diese Standard-Windows-Komponente im Rahmen der Live Essentials kann man ebenfalls batchgesteuert installieren. Zu diesem Zweck muss man sich den zugehörigen Offline-Installer WLSetup-all.exe herunterladen und kann mit Hilfe spezieller Optionen den MovieMaker auf dem jeweiligen Rechner installieren. Die dazu benötigten Optionen zeigt das Batch-Skript Install.cmd in dem durch den untenstehenden Link zur Verfügung gestellten Archiv. Hier finden sich ebenfalls zwei Links auf weiter­füh­ren­de Quellen im Internet. Außerdem haben wir in dem Archiv noch das Skript DisableEulaLiveEssentials2012.cmd hinterlegt, das als Gruppenrichtlinienskript beim Einloggen der Benutzer ausgeführt werden muss, um die Nutzungsbedingungen automatisch abzunicken.

MS-Office 2010

Um das MS-Office-Paket im Netzwerk auszurollen, muss zunächst eine Konfigurationsdatei erstellt werden. Zu diesem Zweck wird das Setup-Programm mit der Option /admin aufgerufen. Man erzeugt auf diese Art und Weise eine .msp-Datei, die dann später den Installationsprozess steuert. Unser Installations-Skript deinstalliert zunächst MS-Office 2003 und installiert zusätzlich ein Programm, das die alten Menüstrukturen unter Office 2010 weiter nutzbar macht.

Die Lizensierung geschieht in einem getrennten Vorgang wieder servergesteuert - also ohne manuellen Eingriff in den Computer.

PDF Creator

Nachdem man seit Office 2007 Dokumente als PDF-Dateien abzuspeichern kann, ist dieses Werkzeug nicht mehr ganz so wichtig. Trotzdem sollte ein solches Programm auf jedem Rechner vorhanden sein. PDF-Creator hat sich seit Jahren bewährt.

Quicktime

Dieses Programm ist fast schon ein Dinosaurier und wird wohl nicht mehr wirklich gebraucht. Wo wir die Installationsprozedur aber nun schon mal haben, soll sie hier nicht vorent­halten werden. Nachdem man sich den Quicktime-Installer herunter­geladen hat, muss man die darin enthaltenen msi-Dateien erst einmal extrahieren. Das macht die Prozedur ExtractMSI.cmd. Danach verwendet man wieder die Funktion Install.cmd, um Quicktime zu installieren. Die Datei Quicktime.qtp wird in dem Zusammenhang in das Verzeichnis "%LOCALAPPDATA%\Apple Computer\QuickTime\QuickTime.qtp" kopiert, um automatische Update-Installationen zu deaktivieren.

Scratch

Scratch lässt sich nun ganz einfach installieren, da es als msi-Paket vorliegt.

Visual Basic Express 2010

Diese automatisierte Installation ist eigentlich auch ganz einfach, hat aber den Haken, dass auf den Zielrechnern automatisch der SQL-Server 2008 Express mit installiert wird. Dieses ist um so ärgerlicher, als dass dessen Installation nicht sauber durchläuft und ständig massenhaft Fehler­meldungen im Ereignisprotokoll auftauchen. Wir haben dann kurzentschlossen den SQL-Server wieder komplett entfernt. Er wurde in unserem Umfeld nicht benötigt. Im Skript Install.cmd werden hinter­ein­ander zunächst Visual Basic und danach das zugehörige Service Pack 1 installiert und dann der SQL-Server wieder entfernt.

VLC Player

Den Reigen beenden wir mit einem Installationsskript für den VLC-Player.