AIRファイルをインストールせずに実行するアプリケーション

  • 概要
    • AIRファイルをインストールせずに実行する実験的なAIRアプリケーション「AIRBoot」を作成しました。
    • ダウンロードはこちら AIRBoot.air
    • スクリーンショット
      AIRBoot.png
  • 動作の仕組み
    • ファイルダイアログで選択、またはドラッグアンドドロップされた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関連の技術情報に戻る


添付ファイル: fileAIRBoot.png 770件 [詳細]

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-07-31 (木) 21:42:47 (768d)