c#

C# で作る AIR Native Extension - 4 -

C# で作る AIR Native Extension


Adobe AIR3 から ANE という ネイティブ拡張機能が実装されたのでWindowsで試してみました。

全部で4ページにまとめます。

今回で終わりです。


開発環境
 Windows XP SP3
 Visual Studio 2010 Express Edition( C# / VC++ )
 FlashBuilder4.6( FlexSDK4.6 )


ane-lab(AIR Native Extension is Lab codes) - Google Project Hosting にC#で作ったサンプルをコミットさせて頂きましたので、参考にして下さい。
間違ってるかもしれないので、決して鵜呑みにしないように。


4.FlashBuilderでAIRアプリを作るよ!最後だよ!


FlashBuilder4.6を使用してFlexデスクトップアプリケーション(AIR)を仕上げましょう。
先回作成したANEファイルから、ネイティブな処理を呼び出せるようになります。


Flexプロジェクトにライブラリプロジェクトを参照させ、ANEファイルをlibsディレクトリにコピーします。


air-swc-append.png


air-ane-append.png


ANEファイルをコピーしたら、Flexプロジェクトのビルドパスにある「ネイティブエクステンション」にANEファイルを追加します。



air-ane-append-project.png




ANEファイルを追加すると、ApplicationList-app.xmlファイルに

<extensions>
        <extensionID>com.chocbanana.win.ApplicationListExtension</extensionID>
    </extensions>
</application>

という記述が追加されます。

ここまで終ったらActionScriptのコーディングです。
以下参照。


[ ApplicationList.mxml ]
-------------------------------
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
                       xmlns:s="library://ns.adobe.com/flex/spark"
                       xmlns:mx="library://ns.adobe.com/flex/mx">
   
    <fx:Script>
        <![CDATA[
            import com.chocbanana.win.ApplicationListExtension;
           
            import mx.collections.ArrayCollection;
           
           
            private var ane:ApplicationListExtension = new ApplicationListExtension();
           
            [Bindable]
            private var ar:ArrayCollection = new ArrayCollection();
           
            protected function btn_applicationList_clickHandler(event:MouseEvent):void
            {
                // TODO Auto-generated method stub
                var _ar:Array = ane.getApplicationList();
                ar.removeAll();
               
                for(var i:int=0; i<_ar.length; i++){
                    var appName:String = _ar[i] as String;
                    ar.addItem(appName);
                }
            }
        ]]>
    </fx:Script>
   
    <fx:Declarations>
        <!-- 非ビジュアルエレメント (サービス、値オブジェクトなど) をここに配置 -->
    </fx:Declarations>
    <s:Panel x="0" y="0" width="100%" height="100%" fontWeight="bold"
             title="Show Installed Applications">
        <s:VGroup x="0" y="0" width="100%" height="100%" horizontalAlign="center"
                  verticalAlign="middle">
            <s:List id="lst_ApplicationList" width="80%" height="80%" dataProvider="{ar}"
                    fontWeight="normal"/>
            <s:Button id="btn_applicationList" label="アプリケーション一覧の取得"
                      click="btn_applicationList_clickHandler(event)" fontWeight="bold"/>
        </s:VGroup>
    </s:Panel>
</s:WindowedApplication>
[ EOF ]
-------------------------------

Flexプロジェクトをビルドして下さい。
証明書は最初に作成したと思うので、もう既にありますね?


ではリリースビルドです。
リリースビルドのエクスポートをクリックして、[ 署名済みネイティブインストーラー ] を選択して下さい。
証明書のパスワードを入力して、[ 終了 ] をクリックすると、ネイティブなインストーラー(EXEファイル)が生成されます。



air-releasebuild.png


air-releasebuild02.png


インストーラーが作成されたら、それをダブルクリックして、インストールして下さい。

1番最初 に作成したC#のDLLはこのインストーラーの中や、ANEファイルの中には含まれていませんの で、アプリケーションを実行すると、異常終了します。

インストールされたアプリケーションは、C:\ProgramFiles\ApplicationListにありますので、そのディレクトリを開いて、 C#のDLLのみを手動でコピーします。


air-dll-copy.png


再度、AIRアプリケーションを実行してみましょう。
無事に実行が終ると、インストールされているアプリケーションの一覧が表示されると思います。


air-native-application.png




お疲れ様でした。


Appendix - インストーラーについて -

ANEを利用したAIRアプリケーションでは、今現在FlashBuilderにてC#のDLLを含めてインストーラー(配布形式)にまとめることが出来 ません。
で、これをどうしたら良いか…という点なのですが、AIRアプリケーションにはサイレントインストールさせるためのインストールオ プションがあると思います。

で、このインストールオプションと、Windowsのもう1つのインストール形式である、MSIパッケージを組み合わせれば、全てを同梱した形で配布出来 るようになると思います。

これを行うには、SharpDevelopとWixを利用すると、msiパッケージを作成出来るので、そちらで(XMLを書いて)msiパッケージとして 1まとめにし、配布する…というのが妥当だと思います。

あ、高価なインストーラー作成アプリを使うなら、この項目は必要ないです。
参考程度に留めておいて下さい。

このページの先頭へ