Alexander Foken: ActiveX oder wie soll das möglich sein?

Beitrag lesen

Moin Moin !

du kannst doch deinem Programm (in was für einer Sprache du es auch immer schreibst) sagen, es soll beim Start auf http://deineupdatelocation.tld/ schauen und von da die neusten Komponenten runterladen in das eigene Programmverzeichnis kopieren und  sich dann neu starten.

... das sollte es höflicherweise aber nicht ohne Nachfrage machen! Ein Programm, das vor dem Start immer erst den Update-Server "anruft", wird ohne Internet-Verbindung nicht laufen, einem Nicht-Flatrate-User enorme Kosten verursachen, und oft ist ein Update schlicht nicht gewünscht.

Beim ersten Start sollte das Programm fragen, wie der User es mit dem automatischen Update hält:
  ( ) nie automatisch updaten, nur manuell
  (*) nur gelegentlich nach Updates suchen und dann fragen
  ( ) immer nach Updates suchen und dann fragen
  ( ) immer automatisch updaten

Diese Einstellungen sollte man später einfach ändern können.

Automatische Updates gibt es nicht nur in Windows. Viele Anwendungen (z.B. Real Player, Mozilla, iTunes) haben ähnliche Funktionen. ActiveX ist dafür völlig unnötig, MS macht es sich damit nur leichter, das Windows-Update-Programm auf dem neuesten Stand zu halten. Eine Anwendung muß eigentlich nur eine HTTP-Verbindung zu einem Server herstellen, die Windows-API bietet dafür sogar schon fertige Funktionen (sie sind technisch gesehen eigentlich Teil des IE, und daher kennen sie auch alle notwendigen Proxy-Einstellungen usw.). Der Server übermittelt eine Text-Datei (einfache Liste, CSV, XML, INI, whatever) mit dem Soll-Zustand, den Ist-Zustand kennt die Anwendung. Aus der Differenz kann die Anwendung ermitteln, welche Dateien herunterzuladen und auszutauschen sind. Auch dieser Download geht über die API-Funktionen. Ein Browser wird dafür gar nicht benötigt, nur eben die Routinen für HTTP-Kommunikation.

Auch auf anderen Systemen ist so etwas problemlos möglich, HTTP ist ein relativ einfaches Protokoll, das in vielen verschiedenen Sprachen für viele verschiedene Systeme implementiert ist. Man muß nur irgendwo eine passende Library mit einem HTTP-Client auftreiben. Microsoft liefert sie bei Windows als Teil des IE mit, z.B. hat Perl mit LWP einen sehr guten HTTP-Client, der auf fast allen Plattformen verfügbar ist. (Und ja, man kann mit Perl schnelle und große Anwendungen schreiben, die sich über HTTP selbst updaten können.) Auch Java hat entsprechende Klassen.

Alexander

--
Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".