デスクトップ AIR インストールファイルのパッケージ化

すべての AIR アプリケーションには、最低限、アプリケーション記述ファイルとメイン SWF ファイルまたはメイン HTML ファイルが必要です。アプリケーションと一緒にインストールする他のすべてのアセットも、AIR ファイルにパッケージ化する必要があります。

ここでは、SDK に付属するコマンドラインツールを使用して AIR アプリケーションをパッケージ化する方法について説明します。アドビオーサリングツールのいずれかを使用してアプリケーションをパッケージ化する方法については、次を参照してください。

すべての AIR インストーラーファイルには、電子証明書を使用して署名する必要があります。AIR インストーラーは、署名を使用して、署名後にアプリケーションファイルが変更されていないかどうかを検証します。証明機関のコードサイニング証明書または自己署名入り証明書を使用できます。

信頼できる証明機関から発行された証明書を使用しているときは、該当の ID が発行者のものであることをアプリケーションのユーザーに保証します。インストールダイアログには、ID が証明機関によって確認済みであることが示されます。

信頼できる証明書によって署名されたアプリケーションのインストールの確認ダイアログ

自己署名証明書を使用している場合、ユーザーは該当の ID を署名者のものとして確認できません。また、自己署名証明書では、パッケージが変更されていないという保証も弱くなります(これは、正規のインストールファイルが、ユーザーの元に届く前に偽造ファイルと置き換えられる可能性があるからです)。インストールダイアログには、発行者の ID を確認できないことが示されます。アプリケーションをインストールするとき、ユーザーはより大きなセキュリティリスクを負うことになります。

フルサイズのグラフィックを表示
自己署名証明書によって署名されたアプリケーションのインストールの確認ダイアログ

ADT -package コマンドを使用すると、1 つの手順で AIR ファイルをパッケージ化して署名することができます。-prepare コマンドを使用して未署名の中間パッケージを作成し、別の手順で -sign コマンドを使用してこの中間パッケージに署名することもできます。

注意: Java バージョン 1.5 以上では、PKCS12 証明書ファイルを保護するパスワードに high-ASCII(拡張 ASCII)文字を使用できません。コードサイニング証明書ファイルを作成するとき、または書き出すときは、パスワードに標準の ASCII 文字のみを使用します。

インストールパッケージへの署名時、ADT はタイムスタンプ局サーバーに自動的にアクセスして時刻を確認します。タイムスタンプ情報は、AIR ファイルに含められます。検証されたタイムスタンプを含む AIR ファイルは、後でいつでもインストールできます。ADT がタイムスタンプサーバーに接続できない場合、パッケージ化はキャンセルされます。このタイムスタンプオプションはオーバーライドできますが、タイムスタンプがない場合、インストールファイルへの署名に使用された証明書の期限が切れると、AIR アプリケーションをインストールできなくなります。

パッケージを作成して既存の AIR アプリケーションを更新する場合、そのパッケージには元のアプリケーションと同じ証明書で署名する必要がありあます。元の証明書が更新されたか過去 180 日以内に期限切れになった場合、または新しい証明書に変更する場合は、移行署名を適用できます。移行署名では、新しい証明書と古い証明書の両方でアプリケーション AIR ファイルに署名する必要があります。ADT migrate コマンドの説明に従って、-migrate コマンドを使用して移行署名を適用します。

重要: 元の証明書の期限が切れた後、移行署名を適用するための猶予期間は 180 日です。移行署名を適用しない場合、これまでアプリケーションを使用していたユーザーは、新しいバージョンをインストールする前に、既存のアプリケーションをアンインストールする必要があります。猶予期間が適用されるのは、アプリケーション記述子の名前空間に AIR のバージョン 1.5.3 以上が指定されているアプリケーションのみです。以前のバージョンの AIR ランタイムを対象としている場合、猶予期間はありません。

AIR 1.1 よりも前のバージョンでは、移行署名はサポートされていませんでした。移行署名を適用するには、バージョン 1.1 以降の SDK でアプリケーションをパッケージ化する必要があります。

AIR ファイルを使用してデプロイされているアプリケーションは、デスクトッププロファイルアプリケーションと呼ばれます。デスクトップファイルがアプリケーション記述ファイルによってサポートされていない場合は、AIR アプリケーションのネイティブインストーラーをパッケージ化するときに ADT を使用できません。このプロファイルを制限するには、アプリケーション記述ファイル内の supportedProfiles エレメントを使用します。デバイスプロファイルおよび supportedProfiles を参照してください。

注意: アプリケーション記述ファイルの設定によって、AIR アプリケーションの ID とデフォルトのインストールパスが決まります。AIR アプリケーション記述ファイルを参照してください。

発行者 ID

AIR 1.5.3 の時点で、発行者 ID は廃止されています。新しいアプリケーション(AIR 1.5.3 以降を使用して最初に発行されたもの)では、発行者 ID を指定する必要はありません。また、指定しないことをお勧めします。

以前のバージョンの AIR で発行されたアプリケーションを更新する場合は、アプリケーション記述ファイルで元の発行者 ID を指定する必要があります。元の発行者 ID を指定しないと、インストールされたバージョンのアプリケーションおよびアップデートバージョンが、それぞれ別のアプリケーションとして扱われます。別の ID を使用するか、publisherID タグを省略すると、ユーザーは新しいバージョンをインストールする前に以前のバージョンをアンインストールする必要があります。

元の発行者 ID を確認するには、META-INF/AIR サブディレクトリにある publisherid ファイルを探します。このディレクトリには、元のアプリケーションがインストールされています。このファイル内のストリングが 発行者 ID です。発行者 ID を手動で指定するには、アプリケーション記述ファイル内で、アプリケーション記述子の名前空間宣言に AIR 1.5.3(またはそれ以降の)ランタイムが指定されている必要があります。

AIR 1.5.3 よりも前に発行されたアプリケーション(アプリケーション記述子の名前空間で以前のバージョンの AIR が指定され、AIR 1.5.3 SDK で発行さたアプリケーション)については、発行者 ID は署名者の証明書に基づいて計算されます。この ID は、アプリケーションの ID を確認するために、アプリケーション ID と共に使用されます。発行者 ID が指定されている場合は、次の目的で使用します。

  • AIR ファイルが、インストールする新しいアプリケーションではなくアップデートであることを確認する

  • 暗号化されたローカルストアの暗号化キーの一部として

  • アプリケーション記憶域ディレクトリのパスの一部として

  • ローカル接続の接続ストリングの一部として

  • AIR ブラウザー API でアプリケーションを呼び出すときに使用する識別ストリングの一部として

  • OSID(カスタムインストール / アンインストールプログラムの作成時に使用)の一部として

AIR 1.5.3 よりも前の AIR については、新しい証明書または更新した証明書を使用し、移行署名に基づいてアプリケーションアップデートに署名すると、アプリケーションの発行者 ID が変更される場合があります。発行者 ID が変更されると、ID に依存している AIR の機能の動作も変わります。例えば、既存の暗号化されたローカルストアにあるデータにはアクセスできなくなります。また、Flash または AIR インスタンスでアプリケーションへのローカル接続を確立するには、接続ストリングに新しい ID を使用する必要があります。

AIR 1.5.3 以降の AIR の場合、発行者 ID は署名者の証明書に基づいていません。この ID は、publisherID タグがアプリケーション記述子に含まれている場合にのみ割り当てられます。アップデートの AIR パッケージに対して指定された発行者 ID が現在の発行者 ID と一致しない場合、アプリケーションは更新できません。

ADT によるパッケージ化

AIR ADT コマンドラインツールを使用して、AIR アプリケーションをパッケージ化できます。パッケージ化の前に、すべての ActionScript、MXML および拡張コードをコンパイルする必要があります。また、コード署名証明書が必要です。

ADT コマンドとオプションについて詳しくは、AIR 開発ツール(ADT)を参照してください。

AIR パッケージの作成

AIR パッケージを作成するには、ADT パッケージコマンドを使用し、リリースビルドに対してターゲットの種類を air に設定します。

adt -package -target air -storetype pkcs12 -keystore ../codesign.p12 myApp.air myApp-app.xml myApp.swf icons

この例では、ADT ツールへのパスがコマンドラインシェルのパス定義に従っていることを前提としています(PATH 環境変数を参照してください)。

アプリケーションファイルが含まれているディレクトリからコマンドを実行する必要があります。この例で使用されているアプリケーションファイルは、myApp-app.xml(アプリケーション記述ファイル)、myApp.swf および icons ディレクトリです。

上に示したコマンドを実行するとき、ADT によって、キーストアパスワードの入力を求めるプロンプトが表示されます(入力するパスワードの文字が表示されないことがあります。入力が完了したら Enter キーを押します)。

AIRI ファイルからの AIR パッケージの作成

AIRI ファイルを作成して署名し、インストール可能な AIR パッケージを作成することができます。

adt -sign -storetype pkcs12 -keystore ../codesign.p12 myApp.airi myApp.air