ConfigMgr: Paketierung mit System Center Configuration Manager – Teil 4

Wie in unserem Vierteiler Eingangs erwähnt, hat der System Center Configuration Manager (ConfigMgr) keine eigene Scriptsprache. Als  Ersatz dafür bietet sich Powershell an.

  1. Artikel: Einleitung und Möglichkeiten der Paketierung
  2. Artikel: Quellen für Silent Setup Parameter
  3. Artikel: Erstellen von MSI Paketen
  4. Artikel: Verteilung mit Powershell?

Speziell das PowerShell App Deployment Toolkit (hier: PADT) bietet sich hier als idealen Wrapper an.

Anhand der Verteilung von Flash wird in diesem Artikel das Toolkit vorgestellt.

Flash 14 kann als MSI heruntergeladen werden. Bei der Installation im Rahmen einer zentralen Verteilung sollte die automatische Updatefunktion abgeschaltet werden. Dies kann durch die Anpassung der mms.cfg erfolgen. Ebenso sollte beim ActiveX Installer (nicht mehr notwendig für Windows 8 und höher) und beim Plugin für Firefox der jeweilige Browser geschlossen sein.

D.h. für unser Script werden folgende Punkte eingestellt:

  • Benachrichtigung des Benutzers, dass Firefox geschlossen werden muss
  • Möglichkeit, dass der Benutzer die Installation verzögern kann
  • Installation eines MSI Files mit Parametern
  • Kopieren eines mms.cfg Files in das entsprechende Verzeichnis unter Windows
    Die Ordnerstruktur beim PADT ist immer gleich:

image

Im Ordner AppDeployToolkit brauchen keine Powershelldateien geändert werden, da er Hilfsdateien für das Toolkit enthält. trotzdem kann es Sinn machen, die AppDeployToolkitConfig.xml anzupassen. Sie enthält Hinweistexte in diversen Sprachen, die an eigene Bedürfnisse angepasst werden können. Ebenso können die PNG und die ICO Datei durch eigene Logos ausgetauscht werden.

In den Ordner Files kommen unsere heruntergeladene “install_flash_player_14_plugin.msi” Datei. Unter SupportFiles wird unsere angepasste mms.cfg abgelegt.

Für die eigentliche Verteilung muss nur die Deploy-Application.ps1 angepasst werden.

Darin sollte zuerst der Variablenblock angepasst werden:


$appVendor = "Adobe"
$appName = "Flash Player - Firefox Plugin"
$appVersion = "14.0.0.125"
$appArch = ""
$appLang = "DE"
$appRevision = "01"
$appScriptVersion = "1.0.0"
$appScriptDate = "07/06/2014"
$appScriptAuthor = "Markus Baeker"

Danach werden die einzelnen Installationsblöcke angepasst:

  • Pre-Installation: Hinweise und Checks vor der eigentlichen Installation
  • Installation: Schritte für die eigentliche Installation
  • Post-Installation: z.B. Benachrichtigung, dass die Installation erfolgreich war
  • Uninstall: Was muss zur Deinstallation alles aufgeräumt werden.

Für unser einfaches Bespiel führen wir folgendes durch:

Pre-Installation

In der Pre-Installation Phase werden wir den Benutzer auf die Installation hinweisen und ihn bitten, Firefox zu schließen. Zusätzlich wird der verfügbare Speicherplatz überprüft:


Show-InstallationWelcome -CloseApps "firefox" -AllowDefer -DeferTimes 3 -CheckDiskSpace -PersistPrompt -BlockExecution -RequiredDiskSpace 10

  • AllowDefer und DeferTimes: ermöglicht dem Benutzer bis zu drei Mal die Installation zu verschieben. Der Wiederholzeitpunkt hängt beim ConfigMgr 2012 Application Model von der Client Einstellung “Software deployment\schedule re-evaluation for deployments” ab.
  • CheckDiskSpace und RequiredDiskSpace: überprüft, ob für die Installation genügend (hier 10MB) Platz verfügbar ist. Wird RequiredDiskSpace nicht angegeben, so ermittelt das Script den notwendigen Plattenplatz anhand der Größe des Quellordners
  • PersistPrompt: Der Dialog wird in der Mitte des Bildschirms gehalten, so dass der Benutzer sich für eine Option entscheiden muss
  • BlockExecution: während der Installation wird ein Starten von Firefox verhindert

Installation

Die Hauptarbeit erfolgt im Installationsabschnitt. Hier werden folgende Einstellungen durchgeführt:

# Perform installation tasks here
Execute-MSI -Action Install -Path "install_flash_player_14_plugin.msi"

#Copy MMS
Copy-File -Path "$dirSupportFiles\mms.cfg" -Destination "$envWindir\SysWOW64\Macromed\Flash\mms.cfg"

#stop update service if running...
Get-Service AdobeFlashPlayerUpdateSvc | Stop-Service

#disable service
Get-Service AdobeFlashPlayerUpdateSvc | Set-Service -StartupType Disabled

Anmerkung dazu:

  • Execute-MSI: das MSI File wird automatisch im Ordner Files gesucht und ausgeführt. Es werden keine eigenen Parameter übergeben, sondern die Defaultparameter aus AppDeployToolkitConfig.xml genutzt.
  • Zusätzlich wird per Copy-File die angepasste mms.cfg kopiert. (Achtung: Zur Vereinfachung des Beispiels wird davon ausgegangen, dass das Script auf einem x64 System ausgeführt wird, da statisch nach SysWOW64 kopiert wird.)
  • Der Flash Update Service wird angehalten (Standard Powershell Befehl)
  • Der Flash Update Service wird deaktiviert.

Die mms.cfg sieht in diesem Beispiel so aus:

LocalStorageLimit = 1
AssetCacheSize = 0
ThirdPartyStorage = 0
AssetCacheSize = 0
AutoUpdateInterval = 1
AutoUpdateDisable = 1
DisableProductDownload = 1
SilentAutoUpdateEnable = 0
LegacyDomainMatching = 0
LocalFileLegacyAction = 0

Post-Installation

Die Post-Installation Phase wird leergelassen, da wie erfolgreiche Installation über die Sprechblase angezeigt wird.

Uninstallation

Für die Deinstallation wird wie folgt angepasst:

# Show Welcome Message, close Internet Explorer if required with a 60 second countdown before automatically closing
Show-InstallationWelcome -CloseApps "firefox" -CloseAppsCountdown "60"

# Show Progress Message (with the default message)
Show-InstallationProgress

# Perform uninstallation tasks here
Execute-MSI -Action Uninstall -Path "install_flash_player_14_plugin.msi"

Aufruf

Die Einbindung in den ConfigMgr wird in der beiliegenden Dokumentation (PSAppDeploymentToolkitAdminGuide.docx) genauer beschrieben.

Hier nur zwei Aufrufe:

  • Deploy-Application.EXE: Ohne Parameter wird standardmäßig die Installation im Interaktiven Modus durchgeführt
  • Deploy-Application.EXE -DeploymentType Uninstall: Deinstallation im Interaktiven Modus
  • Deploy-Application.EXE -DeploymentType Uninstall -DeployMode Silent: Deinstallation im Silent Modus, dies bedeutet auch, dass die angegebenen Programme ohne Rückfrage geschlossen werden!
This entry was posted in Configuration Manager, Deutsch, Powershell, System Center, System Center 2012 and tagged , , , , , . Bookmark the permalink.