株式会社ライブキャストロゴ 株式会社ライブキャスト

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」にする必要がありますので、ご注意を!