Aktualisieren von Anwendungen

Die Updater -Klasse (im flash.desktop-Paket) enthält eine Methode, update() , die Sie verwenden können, um die derzeit ausgeführte Anwendung mit einer anderen Version zu aktualisieren. Im folgenden Beispiel wird die Anwendung aktualisiert, wenn sich eine Version der AIR-Datei (Sample_App_v2.air) auf dem Desktop des Benutzers befindet.

ActionScript-Beispiel:

var updater:Updater = new Updater(); 
var airFile:File = File.desktopDirectory.resolvePath("Sample_App_v2.air"); 
var version:String = "2.01"; 
updater.update(airFile, version);

JavaScript-Beispiel:

var updater = new air.Updater(); 
var airFile = air.File.desktopDirectory.resolvePath("Sample_App_v2.air"); 
var version = "2.01"; 
updater.update(airFile, version);

Bevor eine Anwendung die Updater-Klasse verwenden kann, muss die aktualisierte Version der AIR-Datei durch den Benutzer oder die Anwendung auf den Computer heruntergeladen werden. Weitere Informationen finden Sie unter Herunterladen einer AIR-Datei auf den Computer des Benutzers .

Ergebnisse des Aufrufs der Updater.update()-Methode

Wenn die update() -Methode durch eine Anwendung in der Laufzeitumgebung aufgerufen wird, wird die Anwendung durch die Laufzeitumgebung geschlossen, und sie versucht anschließend, die neue Version anhand der AIR-Datei zu installieren. Die Laufzeitumgebung prüft, ob die in der AIR-Datei angegebenen Anwendungs- und Herausgeber-IDs mit denjenigen der Anwendung, die die update() -Methode aufruft, übereinstimmen. (Weitere Informationen zur Anwendungs-ID und Herausgeber-ID finden Sie unter AIR-Anwendungsdeskriptordateien .) Sie prüft auch, ob der version-String mit dem version -String, der an die update() -Methode übergeben wird, übereinstimmt. Bei erfolgreichem Abschluss der Installation wird die neue Version der Anwendung von der Laufzeitumgebung geöffnet. Andernfalls (falls die Installation nicht abgeschlossen werden kann) wird die vorhandene Version der Anwendung wieder geöffnet.

Wenn unter Mac OS eine aktualisierte Version der Anwendung installiert werden soll, benötigt der Benutzer die entsprechenden Systemberechtigungen, um im Anwendungsverzeichnis zu installieren. Unter Windows und Linux muss der Benutzer über Administratorberechtigungen verfügen.

Wenn für die aktualisierte Version der Anwendung eine aktualisierte Version der Laufzeitumgebung erforderlich ist, wird die neue Laufzeitversion installiert. Für die Aktualisierung der Laufzeitumgebung muss ein Benutzer über Administratorberechtigungen für den Computer verfügen.

Wenn Sie eine Anwendung mit ADL testen, führt der Aufruf der update() -Methode zu einem Laufzeitausnahmefehler.

version-String

Der String, der als version -Parameter der update() -Methode angegeben ist, muss mit dem String im version - oder versionnumber -Attribut in der Anwendungsdeskriptordatei der zu installierenden AIR-Datei übereinstimmen. Aus Sicherheitsgründen ist die Angabe des version -Parameters erforderlich. Da die Anwendung die Versionsnummer in der AIR-Datei überprüfen muss, wird ausgeschlossen, dass die Anwendung versehentlich eine ältere Version installiert. (Eine ältere Version der Anwendung enthält möglicherweise Sicherheitsschwachstellen, die in der derzeit installierten Anwendung behoben wurden.) Außerdem sollte der version-String in der AIR-Datei mit dem version-String in der installierten Anwendung verglichen werden, um Downgrade-Angriffe zu verhindern.

In Versionen vor AIR 2.5 kann der Versionsstring ein beliebiges Format haben, wie etwa „2.01“ oder „Version 2“. In AIR 2.5 oder höher muss der Versionsstring eine Folge von bis zu drei dreistelligen Zahlen sein, die durch Punkte getrennt sind. So sind zum Beispiel „.0“, „1.0“ und „67.89.999“ gültige Versionsnummern. Vor dem Aktualisieren der Anwendung sollten Sie den Updateversionsstring validieren.

Wenn eine Adobe AIR-Anwendung eine AIR-Datei vom Internet herunterlädt, empfiehlt es sich, einen Mechanismus zu bieten, mit dem der Webservice der Adobe AIR-Anwendung die Version der heruntergeladenen Datei mitteilen kann. Anschließend kann die Anwendung diesen String als version -Parameter der update() -Methode verwenden. Wird die AIR-Datei auf andere Weise abgerufen, sodass die Version der AIR-Datei unbekannt ist, kann die AIR-Anwendung durch eine Überprüfung der AIR-Datei die Versionsinformationen feststellen. (Bei einer AIR-Datei handelt es sich um ein ZIP-komprimiertes Archiv und bei der Anwendungsdeskriptordatei um den zweiten Datensatz in diesem Archiv.)

Ausführliche Informationen zur Anwendungsdeskriptordatei finden Sie unter AIR-Anwendungsdeskriptordateien .

Signierungsablauf für Anwendungsupdates

Das Veröffentlichen von Updates in Ad-hoc-Weise kompliziert die Verwaltung mehrerer Anwendungsversionen und erschwert das Verfolgen von Zertifikatablaufdaten. Möglicherweise laufen Zertifikate ab, bevor Sie ein Update veröffentlichen.

Die Adobe AIR-Laufzeitumgebung behandelt ein Anwendungsupdate, das ohne Migrationssignatur veröffentlicht wird, als neue Anwendung. Benutzer müssen ihre aktuelle AIR-Anwendung deinstallieren, bevor sie das Anwendungsupdate installieren können.

Um dieses Problem zu lösen, laden Sie jede aktualisierte Anwendung mit dem neuesten Zertifikat an eine separate Bereitstellungs-URL hoch. Schließen Sie einen Mechanismus ein, der Sie daran erinnert, Migrationssignaturen anzuwenden, wenn der 180-Tage-Toleranzzeitraum für das Zertifikat begonnen hat. Weitere Informationen finden Sie unter Signieren einer aktualisierten Version einer AIR-Anwendung .

Informationen zum Anwenden von Signaturen finden Sie unter ADT-Befehle .

Führen Sie Folgendes aus, um das Anwenden von Migrationssignaturen zu vereinfachen:

  • Laden Sie jede aktualisierte Anwendung auf eine separate Bereitstellungs-URL hoch.

  • Laden Sie die Updatedeskriptor-XML-Datei und das neueste Zertifikat für das Update auf dieselbe URL hoch.

  • Signieren Sie die aktualisierte Anwendung mit dem neuesten Zertifikat.

  • Wenden Sie mit dem Zertifikat, das zum Signieren der vorherigen Version auf einer anderen URL verwendet wurde, eine Migrationssignatur auf die aktualisierte Anwendung an.