NativeApplication.nativeApplication.startAtLogin = true;
の1行でスタートアップメニューにAIRアプリのショートカットが作成されるようになります。サンプルソースは以下の通り。
<?xml version="1.0" encoding="utf-8"?> <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApp()"> <mx:Script> <![CDATA[ private function initApp():void { NativeApplication.nativeApplication.startAtLogin = true; } ]]> </mx:Script> </mx:WindowedApplication>
但し、この値をfalseにしたからといってこのショートカットが削除されるわけではありません。
現在のユーザーがログインしたときは常にこのアプリケーションを自動的に起動するかどうかを指定します。
startAtLoginプロパティは、ユーザーがログインしたときにアプリケーションが自動的に起動することを指定するための、オペレーティングシステムで定義されるメカニズム のステータスを反映します。ユーザーは、オペレーティングシステムのユーザーインターフェイスを使用して、手動でステータスを変更できます。このプロパ ティは、ステータスを最後に変更したのが AIR アプリケーションとオペレーティングシステムのどちらであるかを示す現在のステータスを反映します。
NativeApplication – ActionScript 3.0 言語およびコンポーネントリファレンスガイドより引用。
ただ、いくつか気になるところがあります。
- アプリケーションでショートカットを登録しているので、アンインストール時に(インストーラにより)削除はされない。
- 毎回アプリの起動時にコールされるとショートカットを手動で削除しても、毎回作り直されてムカツク。
- 逆に初回のみしか起動されないようなロジックを書く(SharedObject等)と、一度でもアンインストールすると、自動的にはショートカットが作成されない。
AIRのインストーラでスタートメニューに登録があればいいのに、残念。。。FlexBuilder3.0での実行時には、以下のようなエラーが出て機能しませんが、リリース版ではちゃんと機能しますので特に気にする必要はありません。
Error: Error #2014: Feature is not available at this time.
at flash.desktop::NativeApplication/set startAtLogin()
が、毎回例外発生してめんどくさいのでtry、catchを入れるやり方もありますが、コンパイルオプションを入れるやり方もあります。C、C++でいうところの#ifdefですね。
-define=CONFIG::release,false
プロジェクトのプロパティ画面を表示し、「Flexコンパイラ」メニューを選択すると、一番下に「追加コンパイラ引数」というのがありますので、ここに追記します。
ソースはこんな感じですね。
CONFIG::release { NativeApplication.nativeApplication.startAtLogin = true; }
リリースビルド版を出力する際には、この例では-define=CONFIG::release,falseの「false」の部分を「true」にする必要がありますので、ご注意を!