AIR アプリケーションのアップデートユーザーは、コンピューター上の AIR ファイルをダブルクリックするかブラウザーから(シームレスインストール機能を使用して)AIR アプリケーションをインストールまたはアップデートできます。Adobe® AIR® インストーラーアプリケーションによってインストールが管理され、既に存在するアプリケーションをアップデートする場合はユーザーに警告が表示されます 一方、Updater クラスを使用して、インストールされているアプリケーションの新しいバージョンへのアップデートをアプリケーション自体で行うこともできます(インストールされているアプリケーションで、新しいバージョンをダウンロードしてインストールできるようになったことを検出できます)。Updater クラスに含まれる update() メソッドを使用することにより、ユーザーのコンピューター上の AIR ファイルを参照してそのバージョンにアップデートすることができます。Updater クラスを使用するには、アプリケーションを AIR ファイルにパッケージ化する必要があります。ネイティブの実行可能ファイルまたはパッケージとしてパッケージ化されたアプリケーションでは、ネイティブプラットフォームが提供するアップデート機能を使用する必要があります。 アップデート AIR ファイルのアプリケーション ID と 発行者 ID の両方が、アップデートするアプリケーションと一致する必要があります。発行者 ID は署名者の証明書から取得します。アップデートおよびアップデートされるアプリケーションの両方を、同じ証明書を使用して署名する必要があります。 AIR 1.5.3 以降では、アプリケーション記述ファイルには <publisherID> エレメントが含まれています。AIR 1.5.2 以前を使用して開発されたバージョンのアプリケーションがある場合は、このエレメントを使用する必要があります。詳しくは、publisherIDを参照してください。 AIR 1.1 以降では、アプリケーションを移行して新しいコード署名証明書を使用できます。アプリケーションを移行して新しい署名を使用するには、新しい証明書と元の証明書の両方を使用してアップデート AIR ファイルに署名する必要があります。証明書の移行は一方的なプロセスです。移行後は、新しい証明書(または両方の証明書)で署名した AIR ファイルのみが既存のインストールへのアップデートとして認識されます。 アプリケーションのアップデートの管理は複雑になることがあります。AIR 1.5 には、新しいアップデートフレームワーク(AdobeAIR アプリケーション向け)が含まれています。このフレームワークでは、開発者が AIR アプリケーションに優れたアップデート機能を実装するのを支援する API が提供されています。 証明書の移行により、自己署名証明書から商用コード署名証明書に切り替えたり、自己署名証明書間または商用コード署名証明書間で切り替えたりすることができます。証明書を移行しないと、既存のユーザーは現在のバージョンのアプリケーションを削除してから新しいバージョンをインストールする必要があります。詳しくは、証明書の変更を参照してください。 アプリケーションにはアップデートのメカニズムを含めることをお勧めします。新しいバージョンのアプリケーションを作成する場合、アップデートのメカニズムを使用すると、新しいバージョンをインストールするようにユーザーに求めることができます。 AIR アプリケーションがインストール、アップデートまたは削除されるとき、AIR アプリケーションインストーラーによってログファイルが作成されます。これらのログの内容は、インストールの問題の原因を突き止めるのに役立ちます。「Installation logs」を参照してください。 注意: Adobe AIR ランタイムの新しいバージョンには、WebKit の更新されたバージョンが含まれている場合があります。更新されたバージョンの WebKit が原因で、デプロイされた AIR アプリケーションの HTML コンテンツに予期しない変更が発生する可能性があります。このような変更が発生した場合は、アプリケーションをアップデートする必要があります。アップデートのメカニズムを使用すると、新しいバージョンのアプリケーションがあることをユーザーに通知できます。詳しくは、HTML 環境について(ActionScript 開発者用)または HTML 環境について(HTML 開発者用)を参照してください。
アプリケーションのアップデートについてUpdater クラス(flash.desktop パッケージのクラス)には update() という 1 つのメソッドが用意されています。このメソッドを使用すると、現在実行しているアプリケーションを別のバージョンに更新できます。例えば、AIR ファイルのバージョン(「Sample_App_v2.air」)がユーザーのデスクトップに保存されている場合にアプリケーションをアップデートするコードの例を次に示します。 ActionScript の例: 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 の例: var updater = new air.Updater(); var airFile = air.File.desktopDirectory.resolvePath("Sample_App_v2.air"); var version = "2.01"; updater.update(airFile, version); アプリケーションで Updater クラスを使用する前に、ユーザーまたはアプリケーションによって、アップデートバージョンの AIR ファイルがコンピューターにダウンロードされている必要があります。詳しくは、ユーザーのコンピューターへの AIR ファイルのダウンロードを参照してください。 Updater.update() メソッド呼び出しの結果ランタイムのアプリケーションで update() メソッドを呼び出すと、ランタイムによってアプリケーションが終了され、AIR ファイルからの新しいバージョンのインストールが試行されます。ランタイムによって、AIR ファイルで指定されたアプリケーション ID および発行者 ID が、update() メソッドの呼び出し元アプリケーションのアプリケーション ID および発行者 ID と一致するかどうかが確認されます(アプリケーション ID および発行者 ID について詳しくは、AIR アプリケーション記述ファイルを参照してください)。さらに、バージョンストリングが、update() メソッドに渡された version ストリングと一致するかどうかが確認されます。インストールが正常に完了した場合、ランタイムによって新しいバージョンのアプリケーションが起動します。それ以外の場合(インストールを完了できなかった場合)は、既存(インストール前)のバージョンのアプリケーションが再度起動します。 Mac OS でアプリケーションのアップデートバージョンをインストールするには、アプリケーションディレクトリにインストールするための適切なシステム権限が必要です。Windows および Linux では、管理権限が必要です。 アップデートバージョンのアプリケーションで、アップデートバージョンのランタイムが必要な場合は、新しいランタイムバージョンがインストールされます。ランタイムをアップデートする作業は、当該コンピューターの管理権限を持つユーザーが実行する必要があります。 ADL を使用してアプリケーションをテストしているときに update() メソッドを呼び出すと、ランタイム例外が発生します。 バージョンストリングについてupdate() メソッドの version パラメーターとして指定するストリングは、インストールする AIR ファイルのアプリケーション記述ファイルで version または versionNumber エレメントに指定されたストリングと一致する必要があります。セキュリティ上の理由から、必ず version パラメーターを指定する必要があります。アプリケーションで AIR ファイルのバージョン番号を必ず確認することにより、古いバージョンのアプリケーションが誤ってインストールされることがなくなります(古いバージョンのアプリケーションには、最新バージョンのアプリケーションでは修正済みのセキュリティ上の脆弱性が含まれている場合があります)。また、ダウングレード攻撃を回避するために、AIR ファイルのバージョンストリングとインストールされたアプリケーションのバージョンストリングが一致するかどうかをアプリケーションで確認する必要があります。 AIR 2.5 より前のAIR では、バージョンストリングを任意の形式で指定できます。例えば、「2.01」や「version 2」のように指定できます。AIR 2.5 以降は、バージョンストリングを、ピリオドで区切った最大 3 つの 3 桁の数値で指定する必要があります。例えば、「.0」、「1.0」および「67.89.999」は、すべて有効な有効バージョン番号です。アプリケーションをアップデートする前に、アップデートのバージョン番号を検証します。 Adobe AIR アプリケーションで Web 経由で AIR ファイルをダウンロードする場合の優れた方法として、ダウンロードしている Adobe AIR アプリケーションのバージョンを Web サービスで通知できるメカニズムがあります。その後、このストリングを、アプリケーションで update() メソッドの version パラメーターとして使用できます。AIR ファイルをこれ以外の方法で取得した場合は AIR ファイルのバージョンが不明な場合がありますが、AIR アプリケーションで AIR ファイルを確認してバージョン情報を特定することができます(AIR ファイルは ZIP 圧縮されたアーカイブで、アプリケーション記述ファイルはそのアーカイブの 2 つ目のレコードです)。 アプリケーション記述ファイルについて詳しくは、AIR アプリケーション記述ファイルを参照してください。 アプリケーションアップデートの署名ワークフローアップデートをアドホックな方法で発行すると、複数のアプリケーションバージョンを管理するタスクが複雑になり、さらに証明書の期限日の追跡も難しくなります。アップデートを発行できるようになるまでに、証明書が期限切れとなる可能性もあります。 Adobe AIR ランタイムでは、移行署名なしで発行されたアプリケーションアップデートを新しいアプリケーションとして扱います。ユーザーは、このようなアプリケーションアップデートをインストールする前に、現在の AIR アプリケーションをアンインストールする必要があります。 この問題を解決するには、アップデートされた各アプリケーションを、最新の証明書を使用して、個別のデプロイ URL にアップロードしてください。また、証明書が 180 日の猶予期間に入っている場合に移行署名を適用するよう通知するメカニズムを含めてください。詳しくは、AIR アプリケーションのアップデートバージョンの署名を参照してください。 署名の適用方法については、ADT コマンドを参照してください。 移行署名の適用手順を効率よく実行するには、次のタスクを実行します。
カスタムのアプリケーションアップデートユーザーインターフェイスの表示AIR には、デフォルトのアップデートインターフェイスがあります。 ユーザーがアプリケーションのバージョンを最初にマシンにインストールしたときは、常にこのインターフェイスが使用されます。ただし、独自のインターフェイスを定義して以降のインスタンスに使用することができます。アプリケーションにカスタムのアップデートインターフェイスが定義されている場合は、現在インストールされているアプリケーションのアプリケーション記述ファイルで customUpdateUI エレメントを指定します。 <customUpdateUI>true</customUpdateUI> アプリケーションがインストールされ、インストールされたアプリケーションとアプリケーション ID および発行者 ID が一致する AIR ファイルがユーザーによって開かれると、デフォルトの AIR アプリケーションインストーラーではなくランタイムによってアプリケーションが起動します。詳しくは、customUpdateUIを参照してください。 アプリケーションが実行されたとき(NativeApplication.nativeApplication オブジェクトから load イベントが送出されたとき)に、アプリケーションを(Updater クラスを使用して)アップデートするかどうかをアプリケーションで指定できます。アップデートするように指定する場合、アプリケーション独自の(標準で実行されるインターフェイスとは異なる)インストールインターフェイスをユーザーに表示することができます。 ユーザーのコンピューターへの AIR ファイルのダウンロードUpdater クラスを使用するには、ユーザーまたはアプリケーションによって、ユーザーのローカルコンピューターに AIR ファイルがあらかじめ保存されている必要があります。 注意: AIR 1.5 にはアップデートフレームワークが含まれており、開発者が AIR アプリケーションに優れたアップデート機能を実装するのを支援します。このフレームワークを使用するのは、Update クラスの update() メソッドを直接使用するよりも格段に簡単です。詳しくは、アップデートフレームワークの使用を参照してください。
次のコードでは、URL(http://example.com/air/updates/Sample_App_v2.air)から AIR ファイルを読み込んで、その AIR ファイルをアプリケーション記憶域ディレクトリに保存します。 ActionScript の例: var urlString:String = "http://example.com/air/updates/Sample_App_v2.air"; var urlReq:URLRequest = new URLRequest(urlString); var urlStream:URLStream = new URLStream(); var fileData:ByteArray = new ByteArray(); urlStream.addEventListener(Event.COMPLETE, loaded); urlStream.load(urlReq); function loaded(event:Event):void { urlStream.readBytes(fileData, 0, urlStream.bytesAvailable); writeAirFile(); } function writeAirFile():void { var file:File = File.applicationStorageDirectory.resolvePath("My App v2.air"); var fileStream:FileStream = new FileStream(); fileStream.open(file, FileMode.WRITE); fileStream.writeBytes(fileData, 0, fileData.length); fileStream.close(); trace("The AIR file is written."); } JavaScript の例: var urlString = "http://example.com/air/updates/Sample_App_v2.air"; var urlReq = new air.URLRequest(urlString); var urlStream = new air.URLStream(); var fileData = new air.ByteArray(); urlStream.addEventListener(air.Event.COMPLETE, loaded); urlStream.load(urlReq); function loaded(event) { urlStream.readBytes(fileData, 0, urlStream.bytesAvailable); writeAirFile(); } function writeAirFile() { var file = air.File.desktopDirectory.resolvePath("My App v2.air"); var fileStream = new air.FileStream(); fileStream.open(file, air.FileMode.WRITE); fileStream.writeBytes(fileData, 0, fileData.length); fileStream.close(); trace("The AIR file is written."); } 詳しくは、以下を参照してください。
アプリケーションが初めて実行されたかどうかの確認アプリケーションのアップデートの完了後に、ユーザーに「はじめに」または「ようこそ」などのメッセージを表示することができます。起動時に、メッセージを表示するかどうかを判断できるように、初めて実行されたかどうかがアプリケーションで確認されます。 注意: AIR 1.5 にはアップデートフレームワークが含まれており、開発者が AIR アプリケーションに優れたアップデート機能を実装するのを支援します。このフレームワークにより、アプリケーションのバージョンが初めて実行されたかどうかを簡単に確認できます。詳しくは、アップデートフレームワークの使用を参照してください。
そのための 1 つの方法として、アプリケーションの初期化時にファイルがアプリケーション記憶域ディレクトリに保存されます。アプリケーションが起動されるたびに、そのファイルが存在するかどうかをアプリケーションで確認します。ファイルが存在しない場合、アプリケーションは現在のユーザーに初めて実行されたことになります。ファイルが存在する場合は、既に少なくとも 1 回はアプリケーションが実行されています。ファイルが存在し、ファイルに現在のバージョン番号よりも古いバージョン番号が含まれていれば、ユーザーが新しいバージョンを初めて実行していると判断できます。 この考え方を表した Flex の例を次に示します。 <?xml version="1.0" encoding="utf-8"?> <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" title="Sample Version Checker Application" applicationComplete="system extension()"> <mx:Script> <![CDATA[ import flash.filesystem.*; public var file:File; public var currentVersion:String = "1.2"; public function system extension():void { file = File.applicationStorageDirectory; file = file.resolvePath("Preferences/version.txt"); trace(file.nativePath); if(file.exists) { checkVersion(); } else { firstRun(); } } private function checkVersion():void { var stream:FileStream = new FileStream(); stream.open(file, FileMode.READ); var reversion:String = stream.readUTFBytes(stream.bytesAvailable); stream.close(); if (reversion != currentVersion) { log.text = "You have updated to version " + currentVersion + ".\n"; } else { saveFile(); } log.text += "Welcome to the application."; } private function firstRun():void { log.text = "Thank you for installing the application. \n" + "This is the first time you have run it."; saveFile(); } private function saveFile():void { var stream:FileStream = new FileStream(); stream.open(file, FileMode.WRITE); stream.writeUTFBytes(currentVersion); stream.close(); } ]]> </mx:Script> <mx:TextArea ID="log" width="100%" height="100%" /> </mx:WindowedApplication> 次の例は、この考え方を JavaScript で表した場合を示しています。 <html> <head> <script src="AIRAliases.js" /> <script> var file; var currentVersion = "1.2"; function system extension() { file = air.File.appStorageDirectory.resolvePath("Preferences/version.txt"); air.trace(file.nativePath); if(file.exists) { checkVersion(); } else { firstRun(); } } function checkVersion() { var stream = new air.FileStream(); stream.open(file, air.FileMode.READ); var reversion = stream.readUTFBytes(stream.bytesAvailable); stream.close(); if (reversion != currentVersion) { window.document.getElementById("log").innerHTML = "You have updated to version " + currentVersion + ".\n"; } else { saveFile(); } window.document.getElementById("log").innerHTML += "Welcome to the application."; } function firstRun() { window.document.getElementById("log").innerHTML = "Thank you for installing the application. \n" + "This is the first time you have run it."; saveFile(); } function saveFile() { var stream = new air.FileStream(); stream.open(file, air.FileMode.WRITE); stream.writeUTFBytes(currentVersion); stream.close(); } </script> </head> <body onLoad="system extension()"> <textarea ID="log" rows="100%" cols="100%" /> </body> </html> アプリケーションでデータをローカル(アプリケーション記憶域ディレクトリなど)に保存している場合、初めて実行されたときに保存された(以前のバージョンの)データがあるかどうかを確認することができます。 アップデートフレームワークの使用アプリケーションのアップデートの管理は煩雑になることがあります。AdobeAIR アプリケーション用アップデートフレームワークには、開発者が AIR の堅牢なアップデート機能を実現できる API が用意されています。AIR アップデートフレームワークでは、開発者向けに次のタスクを実行します。
AIR アップデートフレームワークには、アプリケーションで使用できるサンプルユーザーインターフェイスが用意されています。このサンプルユーザーインターフェイスにより、アプリケーションのアップデートに関する基本情報と設定オプションがユーザーに示されます。アプリケーションでカスタムユーザーインターフェイスを定義して、アップデートフレームワークに使用することもできます。 AIR アップデートフレームワークを使用すると、AIR アプリケーションのアップデートバージョンに関する情報を単純な XML 設定ファイルに格納できます。ほとんどのアプリケーションでは、これらの設定ファイルに基本コードを含めるように設定することで、エンドユーザーが使いやすいアップデート機能を実現できます。 アップデートフレームワークを使用しない場合でも、Adobe AIR には、AIR アプリケーションの新しいバージョンへのアップグレードに使用できる Updater クラスが用意されています。 Updater クラスを使用して、ユーザーのコンピューター上の AIR ファイルに含まれているバージョンにアプリケーションをアップグレードできます。ただし、アップグレードの管理では、ローカルに保存されている AIR ファイルに基づいてアプリケーションをアップデートする以外にも作業が必要になることがあります。 AIR アップデートフレームワークのファイルAIR アップデートフレームワークは、AIR 2 SDK の frameworks/libs/air ディレクトリにあります。このフレームワークには、次のファイルが含まれています。
詳しくは、次の節を参照してください。 Flex 開発環境の設定AIR 2 SDK の frameworks/libs/air ディレクトリにある SWC ファイルでは、Flex および Flash の開発で使用できるクラスが定義されています。 Flex SDK でのコンパイル時にアップデートフレームワークを使用するには、amxmlc コンパイラーの呼び出しに ApplicationUpdater.swc ファイルまたは ApplicationUpdater_UI.swc ファイルを含めます。次の例では、コンパイラーが Flex SDK ディレクトリの lib サブディレクトリに ApplicationUpdater.swc ファイルを読み込みます。 amxmlc -library-path+=lib/ApplicationUpdater.swc -- myApp.mxml 次の例では、コンパイラーが Flex SDK ディレクトリの lib サブディレクトリに ApplicationUpdater_UI.swc ファイルを読み込みます。 amxmlc -library-path+=lib/ApplicationUpdater_UI.swc -- myApp.mxml Flash Builder を使用して開発している場合は、プロパティダイアログボックスで「Flex ビルドパス」設定の「ライブラリパス」タブに SWC ファイルを追加します。 SWC ファイルは、amxmlc コンパイラー(Flex SDK を使用)または Flash Builder で参照するディレクトリにコピーしてください。 HTML ベースの AIR アプリケーションへのフレームワークファイルのインクルードアップデートフレームワークの frameworks\html ディレクトリには、次のファイルが含まれています。
AIR アプリケーションの JavaScript コードでは、SWF ファイルで定義されているクラスを使用できます。 アップデートフレームワークを使用するには、アプリケーションディレクトリ(またはサブディレクトリ)に applicationupdater.swf ファイルまたは applicationupdater_ui.swf ファイルを含めます。次に、そのファイルを読み込む script タグを、フレームワークを使用する HTML ファイルの JavaScript コードに含めます。 <script src="applicationUpdater.swf" type="application/x-shockwave-flash"/> applicationupdater_ui.swf ファイルを読み込む場合は、次の script タグを使用します。 <script src="applicationupdater_ui.swf" type="application/x-shockwave-flash"/> これらの 2 つのファイルで定義されている API については、このドキュメントの後半で説明します。 基本のサンプル:ApplicationUpdaterUI バージョンの使用アップデートフレームワークの ApplicationUpdaterUI バージョンには、アプリケーションで簡単に使用できる基本インターフェイスが用意されています。以下に基本のサンプルを示します。 まず、アップデートフレームワークを呼び出す AIR アプリケーションを作成します。
次に、AIR アプリケーションのアップデートバージョンを Web サーバーに追加します。
これは基本のサンプルですが、多くのアプリケーションに十分なアップデート機能を提供できます。このドキュメントの後半では、ニーズに最も適したアップデートフレームワークの使用方法について説明します。 アップデートフレームワークの使用方法を示す別の例については、Adobe AIR デベロッパーセンターで次のサンプルアプリケーションを参照してください。
AIR 2.5 へのアップデートアプリケーションへのバージョン番号の割り当て規則が AIR 2.5 で変更されたので、AIR 2 アップデートフレームワークは、AIR 2.5 アプリケーション記述子のバージョン情報を解析できません。互換性がないので、AIR 2.5 を使用するようにアプリケーションを更新する前に、アプリケーションが新しいアップデートフレームワークを使用するように変更する必要があります。したがって、2.5 より前のバージョンの AIR から、AIR 2.5 以降のアプリケーションに更新するには、2 つのアップデートが必要です。最初のアップデートでは、AIR 2 名前空間を使用して、AIR 2.5 アップデートフレームワークを含めます(引き続き、AIR 2.5 SDK を使用するアプリケーションパッケージを作成できます)。2 つ目のアップデートで、AIR 2.5 名前空間を使用して、アプリケーションの新しい機能を含めることができます。 AIR Updater クラスディレクトリを使用する AIR 2.5 アプリケーションへのアップデート以外を実行しない、中間アップデートを含めることもできます。 次の例に、バージョン 1.0 から 2.0 にアプリケーションをアップデートする方法を示します。バージョン 1.0 では古い 2.0 名前空間を使用しています。バージョン 2.0 では、2.5 名前空間を使用しており、AIR 2.5 API を使用して新しい機能が実装されています。
<?xml version="1.0" encoding="utf-8"?> <update xmlns="http://ns.adobe.com/air/framework/update/description/2.5"> <version>2.0</version> <url>http://example.com/updates/sample_2.0.air</url> <description>This is the intermediate version.</description> </update> アップデート記述ファイルの定義と Web サーバーへの AIR ファイルの追加AIR アップデートフレームワークを使用するときは、使用できるアップデートに関する基本情報を、Web サーバーに格納されるアップデート記述ファイルに定義します。アップデート記述ファイルは単純な XML ファイルです。アプリケーションに含まれているアップデートフレームワークは、このファイルをチェックして、新しいバージョンがアップロードされているかどうかを調べます。 アップデート記述ファイルの形式は、AIR 2.5 で変更されました。新しい形式では、別の名前空間が使用されます。元の名前空間は、「http://ns.adobe.com/air/framework/update/description/1.0」です。AIR 2.5 の名前空間は、「http://ns.adobe.com/air/framework/update/description/2.5」です。 AIR 2.5 より前に作成された AIR アプリケーションは、バージョン 1.0 アップデート記述子のみを読み取ることができます。AIR 2.5 以降に含まれるアップデータフレームワークを使用して作成された AIR アプリケーションは、バージョン 2.5 アップデート記述子のみを読み取ることができます。バージョンの互換性がないので、2 つのアップデート記述ファイルを作成することが必要になる場合があります。AIR 2.5 バージョンのアプリケーションのアップデートロジックは、新しい形式を使用するアップデート記述子をダウンロードする必要があります。以前のバージョンの AIR アプリケーションでは、元の形式を使用し続ける必要があります。どちらのファイルも、アップデートをリリースするたびに変更する必要があります(AIR 2.5 より前に作成されたバージョンのサポートを停止するまで)。 アップデート記述ファイルには次のデータが含まれます。
version エレメントと url エレメントは必須です。 description エレメントはオプションです。 次にバージョン 2.5 アップデート記述ファイルのサンプルを示します。 <?xml version="1.0" encoding="utf-8"?> <update xmlns="http://ns.adobe.com/air/framework/update/description/2.5"> <versionNumber>1.1.1</versionNumber> <url>http://example.com/updates/sample_1.1.1.air</url> <description>This is the latest version of the Sample application.</description> </update> 次にバージョン 1.0 アップデート記述ファイルのサンプルを示します。 <?xml version="1.0" encoding="utf-8"?> <update xmlns="http://ns.adobe.com/air/framework/update/description/1.0"> <version>1.1.1</version> <url>http://example.com/updates/sample_1.1.1.air</url> <description>This is the latest version of the Sample application.</description> </update> 複数の言語を使用して description タグを定義する必要がある場合は、複数の text エレメントを使用して lang 属性を定義します。 <?xml version="1.0" encoding="utf-8"?> <update xmlns="http://ns.adobe.com/air/framework/update/description/2.5"> <versionNumber>1.1.1</versionNumber> <url>http://example.com/updates/sample_1.1.1.air</url> <description> <text xml:lang="en">English description</text> <text xml:lang="fr">French description</text> <text xml:lang="ro">Romanian description</text> </description> </update> アップデート記述ファイルをアップデート AIR ファイルと共に Web サーバーに配置します。 アップデートフレームワークの templates ディレクトリには、サンプルのアップデート記述ファイルがあります。このサンプルには、単一言語と複数言語の両方のバージョンが含まれています。 Updater オブジェクトのインスタンス化コードに AIR アップデートフレームワークを読み込んだ後(Flex 開発環境の設定および HTML ベースの AIR アプリケーションへのフレームワークファイルのインクルードを参照)、次のように Updater オブジェクトをインスタンス化する必要があります。 ActionScript の例: var appUpdater:ApplicationUpdater = new ApplicationUpdater(); JavaScript の例: var appUpdater = new runtime.air.update.ApplicationUpdater(); 前述のコードでは、(ユーザーインターフェイスを含まない)ApplicationUpdater クラスを使用しています。(ユーザーインターフェイスを提供する)ApplicationUpdaterUI クラスを使用する場合は、次のコードを使用します。 ActionScript の例: var appUpdater:ApplicationUpdaterUI = new ApplicationUpdaterUI(); JavaScript の例: var appUpdater = new runtime.air.update.ApplicationUpdaterUI(); このドキュメントの以降のコード例は、appUpdater という名前の Updater オブジェクトをインスタンス化済みであることを前提としています。 アップデート設定の構成ApplicationUpdater と ApplicationUpdaterUI はいずれも、アプリケーションに付属する設定ファイルを使用するか、アプリケーションで ActionScript または JavaScript を使用して設定できます。 XML 設定ファイルでのアップデート設定の定義アップデート設定ファイルは XML ファイルです。このファイルには、次のエレメントを含めることができます。
ApplicationUpdaterUI の設定ファイルには、updateURL エレメントと delay エレメントに加えて次のエレメントを含めることができます。
次に ApplicationUpdater フレームワークの設定ファイルの例を示します。 <?xml version="1.0" encoding="utf-8"?> <configuration xmlns="http://ns.adobe.com/air/framework/update/configuration/1.0"> <url>http://example.com/updates/update.xml</url> <delay>1</delay> </configuration> 次に、defaultUI エレメントの定義を含む、ApplicationUpdaterUI フレームワークの設定ファイルの例を示します。 <?xml version="1.0" encoding="utf-8"?> <configuration xmlns="http://ns.adobe.com/air/framework/update/configuration/1.0"> <url>http://example.com/updates/update.xml</url> <delay>1</delay> <defaultUI> <dialog name="checkForUpdate" visible="false" /> <dialog name="downloadUpdate" visible="false" /> <dialog name="downloadProgress" visible="false" /> </defaultUI> </configuration> configurationFile プロパティでは、次に示すように設定ファイルの場所を指定します。 ActionScript の例: appUpdater.configurationFile = new File("app:/cfg/updateConfig.xml");JavaScript の例: appUpdater.configurationFile = new air.File("app:/cfg/updateConfig.xml"); アップデートフレームワークの templates ディレクトリには、config-template.xml という名前のサンプルの設定ファイルがあります。 アップデート設定の ActionScript コードまたは JavaScript コードの定義これらの設定パラメーターは、次に示すようにアプリケーションのコードを使用して設定することもできます。 appUpdater.updateURL = " http://example.com/updates/update.xml"; appUpdater.delay = 1; Updater オブジェクトのプロパティは updateURL および delay です。これらのプロパティでは、設定ファイルの updateURL エレメントおよび delay エレメントと同じ設定(アップデート記述ファイルの URL およびアップデートのチェックの間隔)を定義します。設定ファイルおよびコード内の設定を両方とも指定した場合は、コードで設定されたプロパティが、設定ファイル内の対応する設定より優先されます。 updateURL プロパティは、設定ファイルまたはスクリプトで定義する必要があります(アップデート記述ファイルの定義と Web サーバーへの AIR ファイルの追加を参照してください)。このプロパティは、Updater を使用する前、つまり Updater オブジェクトの initialize() メソッドを呼び出す前(アップデートフレームワークの初期化を参照してください)に定義する必要があります。 ApplicationUpdaterUI フレームワークでは、Updater オブジェクトの次のような追加のプロパティを定義します。
各プロパティは、ApplicationUpdaterUI ユーザーインターフェイスの 1 つ以上のダイアログボックスに対応しています。各プロパティは Boolean 値で、デフォルト値は true です。false に設定した場合、対応するダイアログボックスはアップデート中に表示されません。 これらのダイアログボックスのプロパティは、アップデート設定ファイル内の設定をオーバーライドします。 アップデートプロセスAIR アップデートフレームワークでは、次のステップでアップデートプロセスが実行されます。
これらの各ステップが完了するたびに、Updater オブジェクトからイベントが送出されます。ApplicationUpdater バージョンでは、プロセスのステップが正常に完了したことを示すイベントをキャンセルできます。これらのイベントのいずれかをキャンセルすると、プロセスのその次のステップがキャンセルされます。ApplicationUpdaterUI バージョンでは、プロセスのステップごとに、プロセスをキャンセルするか進行させるかをユーザーが選択できるダイアログボックスが表示されます。 イベントをキャンセルした場合、Updater オブジェクトのメソッドを呼び出すとプロセスを再開できます。 ApplicationUpdater バージョンでアップデートプロセスが進行するときは、現在の状態が currentState プロパティに記録されます。このプロパティは、次のいずれかの値のストリングに設定されます。
Updater オブジェクトのメソッドの中には、Updater が特定の状態の場合にのみ実行されるものもあります。 アップデートフレームワークの初期化アップデートを初期化するには、設定プロパティを設定した後に(基本のサンプル:ApplicationUpdaterUI バージョンの使用を参照してください)initialize() メソッドを呼び出します。 appUpdater.initialize(); このメソッドは、次の処理を行います。
このメソッドを呼び出すと、Updater オブジェクトから次のイベントが送出されます。
UpdateEvent.INITIALIZED イベントが送出されると、アップデートプロセスが完了します。 initialize() メソッドを呼び出すと、タイマーの delay の設定に基づいてアップデートプロセスが開始され、すべてのステップが実行されます。しかし、Updater オブジェクトの checkNow() メソッドを呼び出すことにより、任意の時点でアップデートプロセスを開始することもできます。 appUpdater.checkNow(); アップデートプロセスが既に実行中の場合は、このメソッドを呼び出しても何も起こりません。それ以外の場合は、アップデートプロセスが開始されます。 checkNow() メソッドを呼び出すと、Updater オブジェクトから次のイベントが送出されます。
checkForUpdate イベントをキャンセルした場合、Updater オブジェクトの checkForUpdate() メソッドを呼び出すことができます(次の節を参照してください)。このイベントをキャンセルしない場合、アップデートプロセスが進行し、アップデート記述ファイルがチェックされます。 ApplicationUpdaterUI バージョンでのアップデートプロセスの管理ApplicationUpdaterUI バージョンでは、ユーザーはユーザーインターフェイスのダイアログボックスにある「キャンセル」を使用してプロセスをキャンセルできます。また、ApplicationUpdaterUI オブジェクトの cancelUpdate() メソッドを呼び出して、アップデートプロセスをプログラムによってキャンセルすることもできます。 ApplicationUpdaterUI オブジェクトのプロパティを設定するか、アップデート設定ファイルでエレメントを定義して、Updater に表示される確認ダイアログボックスを指定します。詳しくは、アップデート設定の構成を参照してください。 ApplicationUpdater バージョンでのアップデートプロセスの管理ApplicationUpdater オブジェクトによって送出されるイベントオブジェクトの preventDefault() メソッドを呼び出して、アップデートプロセスのステップをキャンセルできます(アップデートプロセスを参照)。デフォルト動作をキャンセルすると、アプリケーションでは続行するかどうかをユーザーに確認するメッセージを表示できます。 以降の節では、プロセスのステップがキャンセルされたときにアップデートプロセスを続行する方法について説明します。 アップデート記述ファイルのダウンロードと解釈アップデートプロセスが開始される前(Updater がアップデート記述ファイルのダウンロードを試みる直前)に、ApplicationUpdater オブジェクトから checkForUpdate イベントが送出されます。checkForUpdate イベントのデフォルト動作をキャンセルすると、アップデート記述ファイルはダウンロードされません。checkForUpdate() メソッドを呼び出すと、アップデートプロセスを再開できます。 appUpdater.checkForUpdate(); checkForUpdate() メソッドを呼び出すと、アップデート記述ファイルが非同期でダウンロードおよび解釈されます。checkForUpdate() メソッドを呼び出すと、Updater オブジェクトから次のイベントが送出されます。
アップデート AIR ファイルのダウンロードUpdater がアップデート記述ファイルを正常にダウンロードおよび解釈した後、ApplicationUpdater オブジェクトから updateStatus イベントが送出されます。デフォルト動作では、アップデートファイル(使用可能な場合)のダウンロードが開始されます。デフォルト動作をキャンセルすると、downloadUpdate() メソッドを呼び出してアップデートプロセスを再開できます。 appUpdater.downloadUpdate(); このメソッドを呼び出すと、AIR ファイルのアップデートバージョンが非同期でダウンロードされます。 downloadUpdate() メソッドからは次のイベントが送出されます。
アプリケーションのアップデートアップデートファイルのダウンロードが完了すると、ApplicationUpdater オブジェクトから downloadComplete イベントが送出されます。デフォルト動作をキャンセルすると、installUpdate() メソッドを呼び出してアップデートプロセスを再開できます。 appUpdater.installUpdate(file); このメソッドを呼び出すと、AIR ファイルのアップデートバージョンがインストールされます。このメソッドには file というパラメーターが 1 つあります。このパラメーターは、アップデートとして使用する AIR ファイルを参照する File オブジェクトです。 ApplicationUpdater オブジェクトから beforeInstall イベントが送出されるのは、installUpdate() メソッドを呼び出した後です。
任意の AIR ファイルからのインストールinstallFromAIRFile() メソッドを呼び出すと、ユーザーのコンピューターの AIR ファイルからアップデートバージョンをインストールできます。 appUpdater.installFromAIRFile(); このメソッドにより、AIR ファイルからアプリケーションのアップデートバージョンがインストールされます。 installFromAIRFile() メソッドからは次のイベントが送出されます。
アップデートプロセスのキャンセルcancelUpdate() メソッドを呼び出すと、アップデートプロセスをキャンセルできます。 appUpdater.cancelUpdate(); このメソッドにより、保留中のダウンロードがあればキャンセルされ、ダウンロードされた不完全なファイルがあれば削除され、定期的なチェックのタイマーが再起動されます。 Updater オブジェクトの初期化中は、このメソッドを呼び出しても何も起こりません。 ApplicationUpdaterUI のインターフェイスのローカライズApplicationUpdaterUI クラスには、アップデートプロセス用のデフォルトのユーザーインターフェイスが用意されています。このインターフェイスには、ユーザーがプロセスの起動、プロセスのキャンセルおよびその他の関連アクションの実行に使用できるダイアログボックスが含まれています。 アップデート記述ファイルの description エレメントでは、アプリケーションの説明を複数の言語で定義できます。次に示すように、複数の text エレメントを使用して lang 属性を定義します。 <?xml version="1.0" encoding="utf-8"?> <update xmlns="http://ns.adobe.com/air/framework/update/description/1.0"> <version>1.1a1</version> <url>http://example.com/updates/sample_1.1a1.air</url> <description> <text xml:lang="en">English description</text> <text xml:lang="fr">French description</text> <text xml:lang="ro">Romanian description</text> </description> </update> アップデートフレームワークは、エンドユーザーのロケールチェーンに最も適した説明を使用します。詳しくは、「アップデート記述ファイルの定義と Web サーバーへの AIR ファイルの追加」を参照してください。 Flex 開発者は、ApplicationUpdaterDialogs バンドルに直接新しい言語を追加できます。 JavaScript 開発者は、Updater オブジェクトの addResources() メソッドを呼び出すことができます。このメソッドにより、言語の新しいリソースバンドルが動的に追加されます。リソースバンドルでは、言語のローカライズされたストリングが定義されます。これらのストリングは、ダイアログボックスの様々なテキストフィールドで使用されます。 JavaScript 開発者は ApplicationUpdaterUI クラスの localeChain プロパティを使用して、ユーザーインターフェイスで使用されるロケールチェーンを定義できます。通常、JavaScript(HTML)開発者のみがこのプロパティを使用します。Flex 開発者は ResourceManager を使用してロケールチェーンを管理できます。 例えば、次の JavaScript コードはルーマニア語およびハンガリー語のリソースバンドルを定義します。 appUpdater.addResources("ro_RO", {titleCheck: "Titlu", msgCheck: "Mesaj", btnCheck: "Buton"}); appUpdater.addResources("hu", {titleCheck: "Cím", msgCheck: "Üzenet"}); var languages = ["ro", "hu"]; languages = languages.concat(air.Capabilities.languages); var sortedLanguages = air.Localizer.sortLanguagesByPreference(languages, air.Capabilities.language, "en-US"); sortedLanguages.push("en-US"); appUpdater.localeChain = sortedLanguages; 詳しくは、リファレンスガイドの ApplicationUpdaterUI クラスの addResources() メソッドに関する説明を参照してください。 |
|