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 コマンドを参照してください。

移行署名の適用手順を効率よく実行するには、次のタスクを実行します。

  • アップデートされた各アプリケーションを、個別のデプロイ URL にアップロードします。

  • アップグレード記述 XML ファイルと、そのアップデート用の最新の証明書を、同じ URL にアップロードします。

  • 最新の証明書を使用して、アップデートされたアプリケーションに署名します。

  • 異なる URL にある以前のバージョンの署名に使用した証明書に基づいて、アップデートされたアプリケーションに移行署名を適用します。

カスタムのアプリケーションアップデートユーザーインターフェイスの表示

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 アップデートフレームワークでは、開発者向けに次のタスクを実行します。

  • 一定の間隔に基づいて、またはユーザーの要求時に、定期的にアップデートをチェックします。

  • Web ソースから AIR ファイル(アップデート)をダウンロードします。

  • 新しくインストールされたバージョンが初めて実行されるときにユーザーに警告を通知します。

  • ユーザーによるアップデートのチェックの必要性を確認します。

  • 新しいアップデートバージョンの情報をユーザーに表示します。

  • ダウンロードの進行状況とエラー情報をユーザーに表示します。

AIR アップデートフレームワークには、アプリケーションで使用できるサンプルユーザーインターフェイスが用意されています。このサンプルユーザーインターフェイスにより、アプリケーションのアップデートに関する基本情報と設定オプションがユーザーに示されます。アプリケーションでカスタムユーザーインターフェイスを定義して、アップデートフレームワークに使用することもできます。

AIR アップデートフレームワークを使用すると、AIR アプリケーションのアップデートバージョンに関する情報を単純な XML 設定ファイルに格納できます。ほとんどのアプリケーションでは、これらの設定ファイルに基本コードを含めるように設定することで、エンドユーザーが使いやすいアップデート機能を実現できます。

アップデートフレームワークを使用しない場合でも、Adobe AIR には、AIR アプリケーションの新しいバージョンへのアップグレードに使用できる Updater クラスが用意されています。 Updater クラスを使用して、ユーザーのコンピューター上の AIR ファイルに含まれているバージョンにアプリケーションをアップグレードできます。ただし、アップグレードの管理では、ローカルに保存されている AIR ファイルに基づいてアプリケーションをアップデートする以外にも作業が必要になることがあります。

AIR アップデートフレームワークのファイル

AIR アップデートフレームワークは、AIR 2 SDK の frameworks/libs/air ディレクトリにあります。このフレームワークには、次のファイルが含まれています。

  • applicationupdater.swc - ActionScript で使用するための、アップデートライブラリの基本機能が定義されています。このバージョンでは、ユーザーインターフェイスは含まれていません。

  • applicationupdater.swf - JavaScript で使用するための、アップデートライブラリの基本機能が定義されています。このバージョンでは、ユーザーインターフェイスは含まれていません。

  • applicationupdater_ui.swc - アプリケーションでアップデートオプションの表示に使用できるユーザーインターフェイスを含む、アップデートライブラリの基本機能(Flex 4 バージョン)が定義されています。

  • applicationupdater_ui.swf - アプリケーションでアップデートオプションの表示に使用できるユーザーインターフェイスを含む、アップデートライブラリの基本機能(JavaScript バージョン)が定義されています。

詳しくは、次の節を参照してください。

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 ディレクトリには、次のファイルが含まれています。

  • applicationupdater.swf - ユーザーインターフェイスを除く、アップデートライブラリの基本機能が定義されています。

  • applicationupdater_ui.swf - アプリケーションでアップデートオプションの表示に使用できるユーザーインターフェイスを含む、アップデートライブラリの基本機能が定義されています。

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 アプリケーションを作成します。

  1. アプリケーションが HTML ベースの AIR アプリケーションである場合は、applicationupdaterui.swf ファイルを読み込みます。

    <script src="ApplicationUpdater_UI.swf" type="application/x-shockwave-flash"/>
  2. AIR アプリケーションのプログラムロジックで、ApplicationUpdaterUI オブジェクトをインスタンス化します。

    ActionScript では、次のコードを使用します。

    var appUpdater:ApplicationUpdaterUI = new ApplicationUpdaterUI(); 

    JavaScript では、次のコードを使用します。

    var appUpdater = new runtime.air.update.ApplicationUpdaterUI(); 

    このコードを、アプリケーションが読み込まれたときに実行される初期化関数に追加できます。

  3. updateConfig.xml という名前のテキストファイルを作成し、次のコードを追加します。

    <?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>

    updateConfig.xml ファイルの URL エレメントを、Web サーバー上のアップデート記述ファイルの最終的な場所に一致するように編集します(次の手順を参照してください)。

    delay は、アプリケーションでアップデートをチェックする間隔を示す日数です。

  4. AIR アプリケーションのプロジェクトディレクトリに updateConfig.xml ファイルを追加します。

  5. Updater オブジェクトに updateConfig.xml ファイルを参照させ、このオブジェクトの initialize() メソッドを呼び出します。

    ActionScript では、次のコードを使用します。
    appUpdater.configurationFile = new File("app:/updateConfig.xml"); 
    appUpdater.initialize();
    JavaScript では、次のコードを使用します。
    appUpdater.configurationFile = new air.File("app:/updateConfig.xml"); 
    appUpdater.initialize();
  6. 最初のアプリケーションとは異なるバージョンを持つ、もう 1 つの AIR アプリケーションを作成します(バージョンはアプリケーション記述ファイルの version エレメントで指定されます)。

次に、AIR アプリケーションのアップデートバージョンを Web サーバーに追加します。

  1. AIR ファイルのアップデートバージョンを Web サーバーに配置します。

  2. updateDescriptor.2.5.xml という名前のテキストファイルを作成し、次の内容を追加します。

    <?xml version="1.0" encoding="utf-8"?> 
         <update xmlns="http://ns.adobe.com/air/framework/update/description/2.5"> 
           <versionNumber>1.1</versionNumber> 
           <url>http://example.com/updates/sample_1.1.air</url> 
           <description>This is the latest version of the Sample application.</description> 
        </update>

    updateDescriptor.xml ファイルの versionNumberURL および description を、アップデート AIR ファイルに一致するように編集します。このアップデート記述形式は、AIR 2.5 SDK 以降に含まれるアップデートフレームワークを使用するアプリケーションで使用されます。

  3. updateDescriptor.1.0.xml という名前のテキストファイルを作成し、次の内容を追加します。

    <?xml version="1.0" encoding="utf-8"?> 
         <update xmlns="http://ns.adobe.com/air/framework/update/description/1.0"> 
           <version>1.1</version> 
           <url>http://example.com/updates/sample_1.1.air</url> 
           <description>This is the latest version of the Sample application.</description> 
        </update>

    updateDescriptor.xml ファイルの versionURL および description を、アップデート AIR ファイルに一致するように編集します。このアップデート記述形式は、AIR 2 SDK 以前に含まれるアップデートフレームワークを使用するアプリケーションで使用されます。

    注意: この 2 つ目のアップデート記述ファイルの作成は、AIR 2.5 より前に作成されたアプリケーションへのアップデートをサポートする場合にのみ必要です。
  4. updateDescriptor.2.5.xml および updateDescriptor.1.0.xml ファイルを、アップデート 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 を使用して新しい機能が実装されています。

  1. アプリケーションのバージョン 1.0 に基づいて、アプリケーションの中間バージョンとして、バージョン 1.0.1 を作成します。

    1. アプリケーションを作成するときは、AIR 2.5 Application Updater フレームワークを使用します。

      注意: Flash テクノロジに基づく AIR アプリケーションの場合は applicationupdater.swc または applicationupdater_ui.swc を、HTML ベースの AIR アプリケーションの場合は applicationupdater.swf または applicationupdater_ui.swf を使用してください。
    2. 次のように古い名前空間とバージョンを使用して、バージョン 1.0.1 用のアップデート記述ファイルを作成します。

      <?xml version="1.0" encoding="utf-8"?> 
          <update xmlns="http://ns.adobe.com/air/framework/update/description/2.0"> 
              <version>1.0.1</version> 
              <url>http://example.com/updates/sample_1.0.1.air</url> 
              <description>This is the intermediate version.</description> 
          </update>
  2. AIR 2.5 API と 2.5 名前空間を使用するバージョン 2.0 のアプリケーションを作成します。

  3. アップデート記述ファイルを作成し、アプリケーションを 1.0.1 バージョンから 2.0 バージョンにアップデートします。

<?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 より前に作成されたバージョンのサポートを停止するまで)。

アップデート記述ファイルには次のデータが含まれます。

  • versionNumberversion:新しいバージョンの AIR アプリケーションです。AIR 2.5 アプリケーションのアップデートに使用されるアップデート記述子の versionNumber エレメントを使用します。値は、新しい AIR アプリケーション記述ファイルの versionNumber エレメントで使用されるストリングと同じであることが必要です。アップデート記述ファイルのバージョン番号がアップデート AIR ファイルのバージョン番号と一致しない場合、アップデートフレームワークは例外をスローします。

  • version:AIR アプリケーションの新しいバージョンです。AIR 2.5 より前に作成されたアプリケーションのアップデートに使用されるアップデート記述子の version エレメントを使用します。値は、新しい AIR アプリケーション記述ファイルの version エレメントで使用されるストリングと同じであることが必要です。アップデート記述ファイルのバージョンがアップデート AIR ファイルのバージョンと一致しない場合、アップデートフレームワークは例外をスローします。

  • versionLabel:ユーザーに表示する、人が読めるバージョンストリングです。versionLabel は省略可能ですが、バージョン 2.5 アップデート記述ファイルでのみ指定できます。アプリケーション記述子で versionLabel を使用し、同じ値に設定する場合にのみ使用します。

  • url:アップデート AIR ファイルの場所です。これは、アップデートバージョンの AIR アプリケーションが含まれるファイルです。

  • description:新しいバージョンに関する詳細です。この情報を、アップデートプロセスの間にユーザーに表示できます。

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 ファイルです。このファイルには、次のエレメントを含めることができます。

  • updateURL - String 値です。リモートサーバー上のアップデート記述ファイルの場所を表します。任意の有効な URLRequest の場所を指定できます。updateURL プロパティは、設定ファイルまたはスクリプトで定義する必要があります(アップデート記述ファイルの定義と Web サーバーへの AIR ファイルの追加を参照してください)。このプロパティは、Updater を使用する前(Updater オブジェクトの initialize() メソッドを呼び出す前。詳しくは、アップデートフレームワークの初期化を参照してください)に定義する必要があります。

  • delay - Number 値です。アップデートをチェックする間隔(日数)を表します(0.25 のような値を指定できます)。値 0(デフォルト値)は、Updater で定期的なチェックが自動的に行われないことを示します。

ApplicationUpdaterUI の設定ファイルには、updateURL エレメントと delay エレメントに加えて次のエレメントを含めることができます。

  • defaultUI - dialog エレメントのリストです。各 dialog エレメントには、ユーザーインターフェイスのダイアログボックスに対応する name 属性があります。各 dialog エレメントには、ダイアログボックスを表示するかどうかを定義する visible 属性があります。デフォルト値は true です。name 属性で使用できる値は次のとおりです。

    • checkForUpdate - アップデートの有無をチェックダイアログボックス、アップデートなしダイアログボックスおよびアップデートエラーダイアログボックスに対応

    • downloadUpdate - アップデートのダウンロードダイアログボックスに対応

    • downloadProgress - ダウンロードの進捗状況ダイアログボックスとダウンロードエラーダイアログボックスに対応

    • installUpdate - アップデートのインストールダイアログボックスに対応

    • fileUpdate - ファイルのアップデートダイアログボックス、ファイルのアップデートなしダイアログボックスおよびファイルエラーダイアログボックスに対応

  • unexpectedError - 予期しないエラーダイアログボックスに対応

    false に設定した場合、対応するダイアログボックスはアップデート時に表示されません。

次に 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 オブジェクトの次のような追加のプロパティを定義します。

  • isCheckForUpdateVisible - アップデートの有無をチェックダイアログボックス、アップデートなしダイアログボックスおよびアップデートエラーダイアログボックスに対応

  • isDownloadUpdateVisible - アップデートのダウンロードダイアログボックスに対応

  • isDownloadProgressVisible - ダウンロードの進捗状況ダイアログボックスとダウンロードエラーダイアログボックスに対応

  • isInstallUpdateVisible - アップデートのインストールダイアログボックスに対応

  • isFileUpdateVisible - ファイルのアップデートダイアログボックス、ファイルのアップデートなしダイアログボックスおよびファイルエラーダイアログボックスに対応

  • isUnexpectedErrorVisible - 予期しないエラーダイアログボックスに対応

各プロパティは、ApplicationUpdaterUI ユーザーインターフェイスの 1 つ以上のダイアログボックスに対応しています。各プロパティは Boolean 値で、デフォルト値は true です。false に設定した場合、対応するダイアログボックスはアップデート中に表示されません。

これらのダイアログボックスのプロパティは、アップデート設定ファイル内の設定をオーバーライドします。

アップデートプロセス

AIR アップデートフレームワークでは、次のステップでアップデートプロセスが実行されます。

  1. Updater の初期化により、delay で定義されている間隔内にアップデートのチェックが実行されたかどうかが確認されます(アップデート設定の構成を参照してください)。アップデートのチェックが必要な場合は、アップデートプロセスが続行されます。

  2. アップデート記述ファイルがダウンロードされ、解釈されます。

  3. アップデート AIR ファイルがダウンロードされます。

  4. アプリケーションのアップデートバージョンがインストールされます。

これらの各ステップが完了するたびに、Updater オブジェクトからイベントが送出されます。ApplicationUpdater バージョンでは、プロセスのステップが正常に完了したことを示すイベントをキャンセルできます。これらのイベントのいずれかをキャンセルすると、プロセスのその次のステップがキャンセルされます。ApplicationUpdaterUI バージョンでは、プロセスのステップごとに、プロセスをキャンセルするか進行させるかをユーザーが選択できるダイアログボックスが表示されます。

イベントをキャンセルした場合、Updater オブジェクトのメソッドを呼び出すとプロセスを再開できます。

ApplicationUpdater バージョンでアップデートプロセスが進行するときは、現在の状態が currentState プロパティに記録されます。このプロパティは、次のいずれかの値のストリングに設定されます。

  • "UNINITIALIZED" - Updater は初期化されていません。

  • "INITIALIZING" - Updater の初期化中です。

  • "READY" - Updater の初期化が完了しました。

  • "BEFORE_CHECKING" - アップデート記述ファイルはまだチェックされていません。

  • "CHECKING" - アップデート記述ファイルのチェック中です。

  • "AVAILABLE" - アップデート記述ファイルは使用可能です。

  • "DOWNLOADING" - AIR ファイルのダウンロード中です。

  • "DOWNLOADED" - AIR ファイルのダウンロードが完了しました。

  • "INSTALLING" - AIR ファイルのインストール中です。

  • "PENDING_INSTALLING" - Updater の初期化は完了し、保留中のアップデートがあります。

Updater オブジェクトのメソッドの中には、Updater が特定の状態の場合にのみ実行されるものもあります。

アップデートフレームワークの初期化

アップデートを初期化するには、設定プロパティを設定した後に(基本のサンプル:ApplicationUpdaterUI バージョンの使用を参照してください)initialize() メソッドを呼び出します。

appUpdater.initialize();

このメソッドは、次の処理を行います。

  • アップデートフレームワークを初期化し、保留中のアップデートがあればそれを同期的にサイレントインストールします。このメソッドを呼び出すとアプリケーションが再起動される場合があるため、アプリケーションの起動時にこのメソッドを呼び出す必要があります。

  • 延期されている更新があるかどうかをチェックし、ある場合はインストールします。

  • アップデートプロセス中にエラーが発生した場合は、アップデートファイルとバージョン情報をアプリケーションのストレージ領域から消去します。

  • delay の間隔が過ぎている場合は、アップデートプロセスを開始します。それ以外の場合はタイマーを再起動します。

このメソッドを呼び出すと、Updater オブジェクトから次のイベントが送出されます。

  • UpdateEvent.INITIALIZED - 初期化が完了したときに送出されます。

  • ErrorEvent.ERROR - 初期化中にエラーが発生したときに送出されます。

UpdateEvent.INITIALIZED イベントが送出されると、アップデートプロセスが完了します。

initialize() メソッドを呼び出すと、タイマーの delay の設定に基づいてアップデートプロセスが開始され、すべてのステップが実行されます。しかし、Updater オブジェクトの checkNow() メソッドを呼び出すことにより、任意の時点でアップデートプロセスを開始することもできます。

appUpdater.checkNow();

アップデートプロセスが既に実行中の場合は、このメソッドを呼び出しても何も起こりません。それ以外の場合は、アップデートプロセスが開始されます。

checkNow() メソッドを呼び出すと、Updater オブジェクトから次のイベントが送出されます。

  • UpdateEvent.CHECK_FOR_UPDATE - アップデート記述ファイルのダウンロードを試みる直前に送出されます。

checkForUpdate イベントをキャンセルした場合、Updater オブジェクトの checkForUpdate() メソッドを呼び出すことができます(次の節を参照してください)。このイベントをキャンセルしない場合、アップデートプロセスが進行し、アップデート記述ファイルがチェックされます。

ApplicationUpdaterUI バージョンでのアップデートプロセスの管理

ApplicationUpdaterUI バージョンでは、ユーザーはユーザーインターフェイスのダイアログボックスにある「キャンセル」を使用してプロセスをキャンセルできます。また、ApplicationUpdaterUI オブジェクトの cancelUpdate() メソッドを呼び出して、アップデートプロセスをプログラムによってキャンセルすることもできます。

ApplicationUpdaterUI オブジェクトのプロパティを設定するか、アップデート設定ファイルでエレメントを定義して、Updater に表示される確認ダイアログボックスを指定します。詳しくは、アップデート設定の構成を参照してください。

ApplicationUpdater バージョンでのアップデートプロセスの管理

ApplicationUpdater オブジェクトによって送出されるイベントオブジェクトの preventDefault() メソッドを呼び出して、アップデートプロセスのステップをキャンセルできます(アップデートプロセスを参照)。デフォルト動作をキャンセルすると、アプリケーションでは続行するかどうかをユーザーに確認するメッセージを表示できます。

以降の節では、プロセスのステップがキャンセルされたときにアップデートプロセスを続行する方法について説明します。

アップデート記述ファイルのダウンロードと解釈

アップデートプロセスが開始される前(Updater がアップデート記述ファイルのダウンロードを試みる直前)に、ApplicationUpdater オブジェクトから checkForUpdate イベントが送出されます。checkForUpdate イベントのデフォルト動作をキャンセルすると、アップデート記述ファイルはダウンロードされません。checkForUpdate() メソッドを呼び出すと、アップデートプロセスを再開できます。

appUpdater.checkForUpdate();

checkForUpdate() メソッドを呼び出すと、アップデート記述ファイルが非同期でダウンロードおよび解釈されます。checkForUpdate() メソッドを呼び出すと、Updater オブジェクトから次のイベントが送出されます。

  • StatusUpdateEvent.UPDATE_STATUS - アップデート記述ファイルのダウンロードと解釈が正常に完了しました。このイベントには、次のプロパティがあります。

    • available - Boolean 値。現在のアプリケーションと異なるバージョンが使用可能である場合は true に設定され、それ以外の場合(バージョンが同じである場合)は false に設定されます。

    • version - String 値。アップデートファイルのアプリケーション記述ファイル内のバージョンです。

    • details - Array 値。ローカライズされたバージョンの説明が存在しない場合、この配列の 1 番目のエレメントで空のストリング("")が返され、2 番目のエレメントで説明が返されます。

      (アップデート記述ファイルに)複数のバージョンの説明が存在する場合、この配列には複数のサブ配列が含まれます。各配列には 2 つのエレメントが含まれます。1 番目のエレメントは言語コード("en" など)で、2 番目のエレメントはその言語の対応する説明(String 値)です。アップデート記述ファイルの定義と Web サーバーへの AIR ファイルの追加を参照してください。

  • StatusUpdateErrorEvent.UPDATE_ERROR - エラーが発生したので、アップデート記述ファイルをダウンロードまたは解釈できませんでした。

アップデート AIR ファイルのダウンロード

Updater がアップデート記述ファイルを正常にダウンロードおよび解釈した後、ApplicationUpdater オブジェクトから updateStatus イベントが送出されます。デフォルト動作では、アップデートファイル(使用可能な場合)のダウンロードが開始されます。デフォルト動作をキャンセルすると、downloadUpdate() メソッドを呼び出してアップデートプロセスを再開できます。

appUpdater.downloadUpdate();

このメソッドを呼び出すと、AIR ファイルのアップデートバージョンが非同期でダウンロードされます。

downloadUpdate() メソッドからは次のイベントが送出されます。

  • UpdateEvent.DOWNLOAD_START - サーバーとの接続が確立されました。ApplicationUpdaterUI ライブラリを使用している場合は、このイベントにより、ダイアログボックスにダウンロードの進捗状況を追跡するためのプログレスバーが表示されます。

  • ProgressEvent.PROGRESS - ファイルのダウンロードの進行中に定期的に送出されます。

  • DownloadErrorEvent.DOWNLOAD_ERROR - 接続中またはアップデートファイルのダウンロード中にエラーが発生した場合に送出されます。HTTP ステータスが無効(「404 - ファイルが見つかりません」など)である場合にも送出されます。このイベントには errorID プロパティがあります。このプロパティは、追加のエラー情報を定義する整数です。追加の subErrorID プロパティには、さらに詳しいエラー情報が含まれます。

  • UpdateEvent.DOWNLOAD_COMPLETE - アップデート記述ファイルのダウンロードおよび解釈が正常に完了しました。このイベントをキャンセルしない場合、ApplicationUpdater バージョンはアップデートバージョンのインストールに進みます。ApplicationUpdaterUI バージョンでは、処理を進行させるかどうかをユーザーが選択できるダイアログボックスが表示されます。

アプリケーションのアップデート

アップデートファイルのダウンロードが完了すると、ApplicationUpdater オブジェクトから downloadComplete イベントが送出されます。デフォルト動作をキャンセルすると、installUpdate() メソッドを呼び出してアップデートプロセスを再開できます。

appUpdater.installUpdate(file);

このメソッドを呼び出すと、AIR ファイルのアップデートバージョンがインストールされます。このメソッドには file というパラメーターが 1 つあります。このパラメーターは、アップデートとして使用する AIR ファイルを参照する File オブジェクトです。

ApplicationUpdater オブジェクトから beforeInstall イベントが送出されるのは、installUpdate() メソッドを呼び出した後です。

  • UpdateEvent.BEFORE_INSTALL - アップデートのインストールの直前に送出されます。この時点でアップデートのインストールをキャンセルすると、ユーザーが現在の作業を終えてからアップデートを実行できるので、場合によっては便利です。Event オブジェクトの preventDefault() メソッドを呼び出すと、次に再起動するまでインストールが延期され、新しいアップデートプロセスも開始されません(これには、checkNow() メソッドの呼び出しによるアップデートと定期的なチェックによるアップデートの両方が含まれます)。

任意の AIR ファイルからのインストール

installFromAIRFile() メソッドを呼び出すと、ユーザーのコンピューターの AIR ファイルからアップデートバージョンをインストールできます。

appUpdater.installFromAIRFile();

このメソッドにより、AIR ファイルからアプリケーションのアップデートバージョンがインストールされます。

installFromAIRFile() メソッドからは次のイベントが送出されます。

  • StatusFileUpdateEvent.FILE_UPDATE_STATUS - installFromAIRFile() メソッドを使用して送信されたファイルが ApplicationUpdater で正常に検証された後に送出されます。このイベントには、次のプロパティがあります。

    • available - 現在のアプリケーションと異なるバージョンが使用可能である場合は true に設定され、それ以外の場合(バージョンが同じである場合)は false に設定されます。

    • version - 使用できる新しいバージョンを表すストリングです。

    • path - アップデートファイルのネイティブパスを表します。

    StatusFileUpdateEvent オブジェクトの available プロパティが true に設定されている場合でも、このイベントをキャンセルできます。このイベントをキャンセルすると、アップデートの進行がキャンセルされます。キャンセルされたアップデートを続行するには、installUpdate() メソッドを呼び出します。

  • StatusFileUpdateErrorEvent.FILE_UPDATE_ERROR - エラーが発生したので、AIR アプリケーションをインストールできませんでした。

アップデートプロセスのキャンセル

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() メソッドに関する説明を参照してください。