ローデンの独り言 ver 6.1
ローデンの独り言 https://rouden.jp
クリックでログアウト アクセスカウンター
Loading... try later!
RSSフィード
まて、それは孔明の・・・(Adobe AIR的な意味で)
Flash & Adobe AIR
今日もAdobeAIRの続き。

今日もプログラミング関係(?)のグチなので、興味ない人はスルーお願いします。
(後10日で夏休み終了なので、普通の話題も戻る・・・かも)

これからデスクトップ常駐型ソフトを作るにあたって、いくつもソフトを作ってインストールするよりも、一つのソフトにたくさん機能があって、ソフト内で選択して使う方がインストールの手間とか、不具合発生時の対応がやりやすいはず・・・。

ということで、swfファイル(AIR APIを使うもの)を動的にロードする感じで作っています。

AIRのソフトでよく使うディレクトリに、「インストール先」「プライベート記憶領域(*1)」があって、インストール先は書き換え不可なのでこっちには外から持ってきたファイルを置けません。

インストール先プライベート記憶領域
読み込み
書きこみ×
そこで、アップデート時にWebにあるファイルをダウンロードし、プライベート記憶領域に配置、動的にリンクさせれば、わざわざAdobeAIRのアップデートウインドウを表示させずにアップデートできる! AdobeAIRのアップデート機能はそこまで面倒なものでもないんですが、デスクトップ常駐ソフトのアップデートなので、ウチのサイトのFlashに仕掛け(*2)をしておいて、アップデートがあったらそのときに告知&自動アップデートしてしまえば、パソコンど素人でもインストールさえすればアップデートの手間が省けてちょっと便利b それに加え、自分以外のプログラマが機能を追加することも容易になるはず!(*3) ・・・と思ってたところまでは良かったんですよ。 これをしようとすると、互いにアクセスする場合クロスドメインになってしまう(?)ため、セキュリティーのエラーメッセージが出て動いてくれない。
*** セキュリティ Sandbox 違反 *** SecurityDomain 'app-storage:/○○.swf' が互換性のないコンテキスト 'app:/××.swf' にアクセスを試みました。 SecurityError: Error #2070: セキュリティサンドボックス侵害 : 呼び出し元 app-storage:/○○.swf は app:/××.swf が属するステージにアクセスできません。
「クロスドメインなら、Security.allowDomainで解決だ!」と思い、やってみるも例外が投げられて無効。 リファレンスをよく見てみると・・・・
メモ : このメソッドを AIR アプリケーションサンドボックス内のコードから呼び出すと、SecurityError 例外がスローされます。アプリケーションセキュリティドメイン外のコンテンツは、アプリケーションサンドボックスのコンテンツを直接クロススクリプトできません。ただし、アプリケーションサンドボックス外のコンテンツは、サンドボックスブリッジを使用してアプリケーションセキュリティサンドボックスのコンテンツと通信できます。
っということで、サンドボックスブリッジを使うことに。 サンドボックスブリッジはLoaderInfoのparentSandboxBridge, childSandboxBridgeプロパティを経由すれば、プロパティやメソッドをクロスドメインでも公開できるというもの。 んで、これを使ってみたんですが、どの部分で二つのプログラムを切っても、この一点を使ってアクセスしなければならない箇所が大量に出てきて、機能が制限されるか、非常に面倒なプログラムになってしまうと判断しました。 ・・・そういうことで、インストール簡略化は断念。 ActionScriptのまだ知らない部分が多くて、こんな感じで計画通りに進まなくなることはよくあります。 (*1):Windowsの場合は、C:\Documents and Settings\(ユーザー名)\Application Data\com.adobe.example.(ソフト名)\Local Storeらしい。 一部設定により変更可で、アンインストール時には自動で削除されない。 (*2):LocalConnectionクラス使ってこっそりやり取りするとか・・・ (*3):悪意のあるプログラマがいないのが前提・・・とある意味危ないこと言ってます
名探偵デンデン | 記事一覧 | 経験が浅いの・・・

最終更新: 2023/05/07 16:49
Message
これはエラーメッセージのテストです。長いメッセージが表示されるとどうなるでしょうか。
 OK