Donnerstag, 14. Juni 2012

Scriptbasierte Auswertung der aktuellen Flash-Version

Folgende Herausforderung stellte sich mir:

Ich verteile via GPO in der Domäne die akutellsten Versionen der Flash ActiveX-Komponente und der Pluginversion in MSI-Form. Beide finden sich hier zum Download.
Von Zeit zu Zeit bemerke ich aber Clients, die aus diversen Gründen keine aktuellen Versionen mehr beziehen, die Installation schlägt meist fehl, was man im Eventlog ("Error 1603 - Schwerwiegender Fehler bei der Installation", na vielen Dank Microsoft) nachlesen kann. Dies erfordert oft eine komplette Deinstallation, teilweise sogar mit dem FixIt-Tool von Microsoft.

Wie finde ich aber heraus, welche Clients Probleme mit der Flashinstallation haben?

Lösung:
Seit ein paar Versionen (welche genau kann ich leider nicht beantworten, einfach mal prüfen) wird in der Registry folgender Wert angelegt:
HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\FlashPlayerActiveX
bzw.
HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\FlashPlayerPlugin
Hierin enthalten ist der REG_SZ mit dem Namen "Version" welcher die gesuchte Information enthält.

Dieser ist auszulesen, bei Nichtbestehen ist dies zu ignorieren. Bewertet werden müssen beide Versionen, da diese auch getrennt installiert werden müssen/können.

Ich habe jetzt im NETLOGON-Ordner der Domäne eine Batch abgelegt, welche im Anmeldescript mit "start /wait CheckFlashVersion.bat" aufgerufen wird. Benötigt wird folgendes:

  • eine Domäne mit einem SYSVOL-Ordner, in welchem die Anmeldescripts liegen und das Prüfscript ebenfalls abgelegt werden kann
  • GPOs die die Software bereitstellen und somit einen Share, den die User lesen dürfen und der die Installationsdateien bereithält
  • darin eine Datei namens "CurrentVersion.txt", welche die aktuell verteilte Version enthält (zum jetzigen Zeitpunkt z. B. "11.3.300.257", dies muss manuell gepflegt werden!)
  • und zuletzt noch einen Ordner/Share, auf dem die Domänenbenutzer Schreibzugriff haben, um ihre Log-Dateien abzulegen.

Nachdem mit "start /wait" beim ursprünglichen Anmeldescript der Flashchecker aufgerufen wurde, vergleicht dieser nun anhand der "CurrentVersion.txt", ob diese mit den Inhalten aus der Registry übereinstimmt. Sollte eine Variante (ActiveX oder Plugin), so ignoriert der Flashchecker dies. Tritt eine Unregelmässigkeit auf, so wird eine Textdatei mit den Versionen in den öffentlichen Share geschrieben und als "Computername.txt" betitelt, wem dies nicht reicht, der aus den %computername%.txt gerne noch etwas wie %userdnsdomain%-%computername%.txt machen. Das Script wird anschließend bei jeder Anmeldung des Benutzers am Client aufgerufen. Die Installation der Software geschieht i. d. R. davor, zumindest bei computerabhängigen Zuweisungen, nämlich wenn der Computer noch nicht in der Anmeldemaske steht und "Computereinstellungen werden geladen" ausgibt. Unter XP konnte man die Installation sogar noch live mitverfolgen.

Läuft das Script ohne Fehler durch, prüft es noch, ob es ggf. vom letzten Mal noch eine Textdatei im Share liegen hat und löscht diese. Gibt es Probleme mit den Versionen, entfällt dieser Schritt selbstveständlich.

Fazit: Viel Geschreibe, wenig Sinn. Das Script läuft bei jeder Anmeldung und vergleicht die Registrywerte mit denen vom Admin und schreibt im Problemfall eine Textdatei.

Intelligenter ist das Script leider noch nicht. Denkbar wäre, eine Deinstallation der alten Version zu versuchen, was jedoch die GUID des Uninstallers erfordert, welche man unter "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" finden kann. Eine praktikable Lösung, dort den richtigen Wert auszulesen, ist mir jedoch noch nicht eingefallen, außer dass man ggf. eine CSV erstellt, in der zu jeder veröffentlichten Version auch die entsprechende GUID mitliefert und anschließend mit "msiexec.exe /qn /x{GUID}" die vorhandene Version entfernt. Erfahrungsgemäß hilft in den Problemfällen, in denen das einfache Überspielen der Flash-Version fehlschlägt jedoch dieser Uninstall nicht weiter, sondern nur noch oben erwähntes FixIt-Tool, manchmal aber auch die Uninstaller von Adobe.

(Zip-Datei enthält Batch)

So far

Snaker

Keine Kommentare:

Kommentar veröffentlichen