Flex AIR アプリを、ブラウザ上から起動する[AIR/Flex]
(2012-09-14 18:38:53) by shinoda


< ページ移動: 1 2 >

例えば、社内システムを Web アプリ化してんだけど、一部のプログラムだけはローカルマシンのリソースを使うので、それぞれのマシンに EXE ファイルとして置いてるんですわ・・・というケースはあるよね。
その時に、そのローカルマシン上のプログラムの起動も、Web アプリのメニュー上から行いたいんですわ・・・という要望もあると思う。

でも、例えば

<a href="C:\Program Files (x86)\apps\apps.exe">A業務システム起動!!</a>

なんてリンクを書いてブラウザからクリックしても(多分)EXE は起動しないよね。
したらセキュリティ的に大変なことだ。

つーことで、普通のプログラムをブラウザから起動するのはなかなか厳しいと思うんだけど、Adobe Flex の AIR アプリなら可能だ。

  1. ローカルマシン上の業務アプリ(Adobe Flex の AIR アプリ)を、allowBrowserInvocation を true にして作成。
  2. AIR アプリを起動するための Flash を作成。
  3. その Flash をセットした HTML を作成。(Flash Builder でリリースビルドのエクスポートをしたら、自動で作成されるけどね。それを自分のサイトにあったデザインに修正すれば良し)

というこれだけだ。

上記 2 で作成した Flash をブラウザに表示して、ボタン(これは Flash の作り方次第だから、文字列でも画像でもボタンでもなんでもいいんだけど)を押せばローカルマシン上で AIR アプリが起動する。

翻訳の微妙な Adobe 本家のサイトより、
http://hakuhin.jp/air/install.html Adobe AIR プログラミング講座
このサイトが非常に参考になった。

Flash 自体は、↓こんな感じで。(ホント、これは起動させるだけのものだけど(^^;)

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="1024" minHeight="720" initialize="initProc()">
    <fx:Script>

        <![CDATA[

            public var air_app_id:String = "hogehoge.app"; // アプリケーションID
            public var air_app_publish:String = "";
            public var air_swf:Object = null;

            private function initProc():void {

                var airSWFLoader:Loader = new Loader(); //Used to load the SWF
                var loaderContext:LoaderContext = new LoaderContext();  
                loaderContext.applicationDomain = ApplicationDomain.currentDomain;

                airSWFLoader.contentLoaderInfo.addEventListener(Event.INIT, onInit);
                airSWFLoader.load(new URLRequest("http://airdownload.adobe.com/air/browserapi/air.swf"),  
                    loaderContext);

            }

            private function onInit(e:Event):void {
                air_swf = e.target.content;

                air_swf.getApplicationVersion(air_app_id, air_app_publish, function(version:String):void {
                    
                    if(version == null) {

< ページ移動: 1 2 >


コメント投稿
次の記事へ >
< 前の記事へ
TOPへ戻る

Powered by
MT4i 3.0.8