12. September 2009

Über Adobe Flash Player (Teil 2: Update)

Funktionsweise des Adobe Flash Player Plugin Auto-Update (unter Windows)

Im ersten Teil haben wir gelernt was das Flash Player Plugin eigentlich ist. Jetzt sehen wir uns mal das etwas schwierige Update-System an.


Update konfigurieren
1. Settings Manager (siehe Bild)
Mit der rechten Maustaste (als Rechtshänder) auf irgendeine Flash-Werbung klicken, im Kontextmenü "Einstellungen..." wählen. Wenn der Dialog "Einstellungen für Adobe Flash Player" erscheint, auf das blaue Fragezeichen rechts oben klicken. Hinweis: Wenn die Flash-Animation zu klein ist, erscheint das Fenster nicht.

Auf der Webseite, die jetzt kommt, links unter "Table of Contents" auf "Global Notifications Settings Panel" klicken. Dann sollte der Dialog wie im Bild erscheinen. Dort kann man einstellen, wie oft Updates (Aktualisierungen) gesucht werden sollen.

Nachteil: Im Settings Manager kann man nur 60, 30, 14 oder 7 Tage auswählen.



2. Config-Datei
Das Plugin / Control sucht nach einer Datei mit dem Namen mms.cfg in folgenden Verzeichnissen:

  • Windows: \Windows\System32\Macromed\Flash
  • Macintosh: /Library/Application Support/Macromedia
  • Linux: /etc/adobe/

In dieser Textdatei kann man diverse Dinge einstellen. Details siehe Flash Player Administration Guide unter Links. Interessant ist hier vor allem der Eintrag

AutoUpdateInterval = 1

Damit sucht das Plugin / Control jeden Tag nach Updates.

Wichtig: Wenn im Settings Manager das Häkchen "Wenn Sie diese Einstellung aktivieren..." im Dialog oben nicht gesetzt ist, wird auch AutoUpdateInterval in der mms.cfg-Datei ignoriert. Das Häkchen ist standardmäßig gesetzt.

Wie geht jetzt das Update?
Das Plugin versucht eine Datei zu erzeugen und einen Wert in die Registry zu schreiben:

C:\WINDOWS\system32\Macromed\Flash\testUpdate.txt
HKLM\SOFTWARE\Macromedia\FlashPlayer\AutoUpdateTest

Beides erfordert normalerweise Administrator-Rechte. Wenn das nicht funktioniert wird kein Update durchgeführt. Die Datei wird wieder gelöscht.

Dann lädt das Plugin die neueste Versionsnummer aus dem Internet.

Wenn ein Update verfügbar ist, installiert das Plugin einen "Runonce" in der Registry (HKCU-Zweig). Ein Runonce ist ein besonderer Autostart. Beim Start des Systems wird der Eintrag einmal ausgeführt und dann gelöscht.

Dieser Runonce startet das Update-Programm von Flash Player. Der NPAPI-Updater heißt NPSWF32_FlashUtil.exe. Der ActiveX-Updater heißt FlashUtil10b.exe oder so. Der genaue Dateiname des ActiveX-Updaters hängt von der Versionsnummer ab.

Der Updater lädt (für die NPAPI-Version) die Datei fpdownload2.macromedia.com/get/flashplayer/update/current/install/install_all_win_pl_sgn.z.
Diese Datei ist offensichtlich komprimiert. Die Methode ist mir nicht bekannt (es ist nicht compress[1]). Sachdienliche Hinweise bitte an mich.


Nachteile des Update-Systems
Das Update-System hat einen verheerenden Konstruktionsfehler: Wenn ein Update gefunden wird, wird keine Meldung ausgegeben und nichts installiert. Erst wenn der  Benutzer mit Admin-Rechten sich nach dem nächsten Neustart wieder anmeldet wird das Update angezeigt.

Das ist offensichtlich problematisch, wenn der Computer nicht täglich einen Neustart macht - oder wenn der Benutzer nicht Admin ist.

Richtig krank daran ist, dass ein Neustart technisch nicht nötig ist. Es reicht den Browser zu beenden und das Update-Programm zu starten. Die neue Version wird sofort aktiv.

Da das Update-System teilweise im Flash Player Plugin eingebaut ist, funktioniert es logischweise nur wenn man es benutzt. Wenn man zum Beispiel Firefox oder Opera benutzt (NPAPI) wird man nicht auf Updates des ActiveX-Controls aufmerksam gemacht.

Nur als Administrator
Ein anderer Nachteil des Update-Systems ist, dass es nur funktioniert wenn man den Webbrowser als Administrator benutzt. Mit ein paar Tricks funktioniert es auch als eingeschränkter Benutzer. Wenn man dem Benutzer Schreibrechte auf die Testdatei und den Registry-Wert (siehe oben) gibt, wird der Runonce auch für eingeschränkte Benutzer angelegt. Allerdings funktioniert das Update-Programm selbst nur als Administrator. Mit dem äußert nützlichen SuRun kann man auch dieses Problem umgehen.


Idee zu einem besseren Update-Programm
Theoretisch sollte es möglich sein die Versionsnummer aus den Flash Player-DLLs auszulesen. Dann mit der aktuellen Versionsnummer aus dem XML-Dokument von Adobes Website vergleichen um bei Bedarf den Updater zu starten. Dieses Programm könnte man vom Taskplaner jede Stunde ausführen lassen, damit Updates sofort angezeigt werden - auch wenn man gerade kein Web-Browser benutzt.

Die gute Nachricht: Ich habe dieses Programm bereits geschrieben. Ich werde es in ein paar Tagen hochladen wenn ich es noch etwas debuggt habe.

Der beliebte Google-Werbeträger Firefox hat in der Version 3.5.3 eine Erkennung von veralteten Flash Player-Versionen. Genau genommen ist die Erkennung in der dazugehörigen Webseite eingebaut. In den Browser soll es erst in Version 3.6 wandern.

Das ist zwar etwas schräg, aber besser als nichts. Zweifelhaft ist allerdings, ob die Leute das Update wirklich durchführen.

Demnächst schreibe ich noch mal was zu Flash Cookies (LSO).


Tip: Unter der Adresse http://www.adobe.com/software/flash/about/ kann man sich die Version des Plugins/ Controls anzeigen lassen. Diese Seite kann man auch im Kontextmenü des Plugins unter "Über Flash Player" aufrufen.


Links

0 Kommentare: