アプリケーションのアップデートについて

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 にある以前のバージョンの署名に使用した証明書に基づいて、アップデートされたアプリケーションに移行署名を適用します。