タグ「air」が付けられているもの

AIRのインストールバッチを使うとブラウザから簡単にAIRのインストールが行えます。

1. サンプルをダウンロードする
Deploying Adobe AIR applications seamlessly with badge install
badge_install_samples.zipのダウンロード

2. サンプル内のexpressInstallExampleフォルダにあるindex.htmlを開きairファイルのURLを指定する
// AIR Application URL
var airApplicationURL = "http://DOMAIN/PATH/sampleApplication-1.air";

3. 画像を変更する
// Air Application Image
var airApplicationImage = "sample.jpg";
これだけwebからのインストールが可能になります。
airでガジェットを作成するような時は、windowsタスクバーに表示させたくない事がある。
その場合、新しいWindowを作成して、
	    newOptions.systemChrome = NativeWindowSystemChrome.NONE;
	    newOptions.type = NativeWindowType.UTILITY;
もしくは、
	    newOptions.systemChrome = NativeWindowSystemChrome.NONE;
	    newOptions.type = NativeWindowType.LIGHTWEIGHT;
をWindowを設定すればタスクバーに表示されなくなる。
この事は、ウィンドウのタスクバーのアイコンとボタンに記載されている。

LIGHTWEIGHTやUTILITYで初期のwindowが開ければよいのだが、その方法が 見つからなかったので、新しいWindowを開く方法を試してみた。

1. タスクトレイもしくは右クリックメニュー(コンテクストメニュー)で閉じるボタンをつける
しかしシステムのクロームを使わないでタスクバーから削除するとウインドウを閉じれなくなるのでメニューに閉じる処理を追加する必要がある
import flash.display.NativeMenu;
import flash.display.NativeMenuItem;
import flash.display.NativeWindow;

import flash.display.NativeWindow;
import flash.display.NativeWindowInitOptions;
import flash.display.NativeWindowSystemChrome;
import flash.display.NativeWindowType

function systemTrayMenuSelectHandler(event:Event) :void {
  switch(event.target["label"]) {
    case "スタートアップ時に起動":
      if(NativeApplication.nativeApplication.startAtLogin){
        NativeApplication.nativeApplication.startAtLogin = false;
        systemTrayMenu.getItemAt(0).checked = false;
      }else{
        NativeApplication.nativeApplication.startAtLogin = true;
        systemTrayMenu.getItemAt(0).checked = true;
      }
      break;
    case "常に手前に表示":
      if(stage.nativeWindow.alwaysInFront){
        stage.nativeWindow.alwaysInFront = false;
        systemTrayMenu.getItemAt(1).checked = false;
      }else{
        stage.nativeWindow.alwaysInFront = true;
        systemTrayMenu.getItemAt(1).checked = true;
      }
      break;
    case "閉じる":
      NativeApplication.nativeApplication.exit();
      break;
    }
}

public function Main() {
  //------------------------------------------
  // 右クリックメニューの作成
  //------------------------------------------
  //タスク・Dockメニュー生成
  systemTrayMenu = new NativeMenu();
  systemTrayMenu.addItem(new NativeMenuItem("スタートアップ時に起動"));
  systemTrayMenu.addItem(new NativeMenuItem("常に手前に表示"));

  // セパレート
  systemTrayMenu.addItem(new NativeMenuItem("", true));
  systemTrayMenu.addItem(new NativeMenuItem("閉じる"));
  if(stage.nativeWindow.alwaysInFront) systemTrayMenu.getItemAt(1).checked = true;

  //イベント(右クリック)
  systemTrayMenu.addEventListener(Event.SELECT, systemTrayMenuSelectHandler);
  this.contextMenu = systemTrayMenu;

  //タスクトレイ・Dock
  if (NativeApplication.supportsDockIcon){
    // Mac
    var dockIcon:DockIcon = NativeApplication.nativeApplication.icon as DockIcon;
    dockIcon.menu = systemTrayMenu;
    var images1:Array = [];
    // 画像をリンゲージから呼び出す
    images1.push(new icon32(0,0));
    NativeApplication.nativeApplication.icon.bitmaps = images1;
  }else if (NativeApplication.supportsSystemTrayIcon){
    // Windows
    var images2:Array = [];
    // 画像をリンゲージから呼び出す
    images2.push(new icon16(0,0));
    NativeApplication.nativeApplication.icon.bitmaps = images2;
    
    //タスクトレイにメニューを追加
    var sysTrayIcon:SystemTrayIcon = NativeApplication.nativeApplication.icon as SystemTrayIcon;
    sysTrayIcon.tooltip = "ガジェット";
    sysTrayIcon.menu = systemTrayMenu;
  }
}

この様に記載すれば、タスクトレイとドック、右クリック時にメニューが表示され
NativeApplication.nativeApplication.exit();
でアプリを終了できる。

3. タスクバーから消す
FLASHで作成したコンテンツの場合
最初に開いたWindowのステージにaddChildされコンテンツが表示されるので
新しいWindowを開く場合には、もとのWindowの中身をコピーしないと何も表示されない。 リファレンスの
NativeWindowの systemChromeに新しいウィンドウを作成し、すべての子表示オブジェクトを新しいウィンドウに移動して、外見上のシステムクロムの設定と透明度の設定を変更する方法のサンプルが掲載されているので、
それを参考に
	    newOptions.systemChrome = NativeWindowSystemChrome.NONE;
	    newOptions.type = NativeWindowType.UTILITY;
の新規Windowを作成する。
public function deChromeWindow(oldWindow:NativeWindow):NativeWindow{
  var newOptions:NativeWindowInitOptions = new NativeWindowInitOptions();
  newOptions.systemChrome = NativeWindowSystemChrome.NONE;
  newOptions.type = NativeWindowType.UTILITY;
  newOptions.transparent = true;

  var newWindow:NativeWindow = new NativeWindow(newOptions);
  newWindow.stage.stageWidth = oldWindow.stage.stageWidth;
  newWindow.stage.stageHeight = oldWindow.stage.stageHeight;

  newWindow.stage.scaleMode = StageScaleMode.NO_SCALE;
  newWindow.stage.align = StageAlign.TOP_LEFT;

  for(var i:int = 0; i < oldWindow.stage.numChildren; i++){
    newWindow.stage.addChild(oldWindow.stage.getChildAt(i));
  }
  newWindow.activate();
  oldWindow.close();
  return newWindow;
}

これをFLASHで処理の最後に読んで新しいWindowを作成する
// タスクバーから消すために新しいWindowを作成する
this.deChromeWindow(this.stage.nativeWindow);
参考にさせていただいたサイト
Adobe AIRで作るデスクトップアプリケーション
AIR でタスクに常駐させメニュー処理を行う & Mac OS X でもそれっぽく対応させてみる
Adobe AIR でタスクトレイにアイコンとメニューを表示させる