AIRファイルをインストールせずに実行するアプリケーション †
- 概要
- AIRファイルをインストールせずに実行する実験的なAIRアプリケーション「AIRBoot」を作成しました。
- ダウンロードはこちら AIRBoot.air
- スクリーンショット

- 動作の仕組み
- ファイルダイアログで選択、またはドラッグアンドドロップされたAIRファイルを読み込む。
- AIRファイルはZIPファイルなので、FZipライブラリ( http://codeazur.com.br/lab/fzip/ ) を使ってメモリ上に展開する。
- メモリ上に展開したAIRファイルの内容を、AIRBootのインストール先のディレクトリ配下の、「widget」ディレクトリ配下に物理ファイルとして書き出す。
- アプリケーション記述ファイル(The application descriptor file - application.xml)の内容を読み込んで、対象のAIRアプリケーションの設定情報を取得する。
- 対象のAIRアプリケーションの設定情報を元に、NativeWindow?を作成する。
- 対象のAIRアプリケーションのメインファイルを読み込んで、作成したNativeWindow?の子要素として追加する。
- 技術的なポイント
- 物理ファイルとして書き出すのは、Embedで埋め込まれていないリソースファイルにもアクセスできるようにするためです。
- インストール先のディレクトリ配下に書き出す理由は、URLが「app:xxx」でないswfファイルをLoaderを使って読み込もうとすると、サンドボックスのセキュリティポリシーに反しているというエラーが発生してしまうためです。
- アプリケーション記述ファイルのネームスペースはAIRのランタイムバージョンによって異なるので、XMLの内容を取得する際には「*::」をつけて任意のネームスペースの値を取得できるようにしています。
- メインファイルの読み込みは、htmlの場合はHTMLLoader、それ以外の場合はLoaderを使って行っています。
Loaderを使う場合は、「allowLoadBytesCodeExecution? = true」にしたLoaderContext?を指定しないとうまく動作しないようです。
- 制約
- 全てのAIRファイルを正常に動作させることができるわけではありません。
(むしろ、正常に動作させるものの方が少ないです・・・)
- 読み込んだAIRアプリケーションのタスクバーに表示されるアイコンは、全てAIRBootのものになります。
(現状のAIRでは、ウインドウ単位でアイコンを指定することができないため)
- swfではなく、htmlで作られたAIRアプリケーションはうまく動作しないことが多いです。
- ウインドウを閉じたときにアプリケーションが終了する仕組みになっていると、AIRBoot自体も終了されてしまいます。
- 画像などのリソースファイルがEmbedで埋め込まれておらず、かつ相対パスではなく絶対パスで指定されているAIRアプリケーションはうまく動作しません。
- タスクトレイを使うAIRアプリケーションを複数読み込んだ場合、最後のものだけが有効になります。
(現状のAIRでは、タスクトレイを複数起動することができないため)
- applicationDirectory配下のファイルにアクセスする方法にもあるように、アンインストールしてもAIRファイルを展開したファイルは削除されません。
お手数ですが、手動で削除して下さい。
AIR関連の技術情報に戻る
|