Starten von Systemprozessen in AIR 2.0

Eine der Neuerungen von AIR 2.0 ist die NativeProcess API, die es ermöglicht mit Systemprozessen zu interagieren und somit Systemanwendungen zu starten und zu beenden. Diese API bietet eine Menge von neuen Möglichkeiten für AIR-Applikationen. In diesem Blogeintrag werde ich zeigen wie aus AIR Firefox gestartet werden kann.

Native Installers
AIR Applikationen können nicht nur als *.air Dateien exportiert und weitergegeben werden, sondern auch als „Native Installer“ also *.exe für Windows bzw. *.dmg für MacOS. Dies ist die Voraussetzung um mit Systemprozessen kommunizieren zu können. Ein weiterer Vorteil von Native Installers ist, dass die AIR Runtime mit der Applikation installiert wird, falls diese noch nicht auf dem System des Benutzers verfügbar ist und eine Internetverbindung besteht. Falls der Benutzer nicht mir dem Internet verbunden ist, kommt wenigstens eine Meldung man solle sich doch bitte die aktuelle AIR runtime von der Adobe Seite herunterladen. Weiterhin gibt es die Möglichkeit die AIR Runtime zum Beispiel auf einer CD/DVD mitzuliefern, dafür ist allerdings eine Re-Destributable Lizenz von Adobe nötig, siehe Blogeintrag von Mike Chambers.

Erstellen eines Native Installers
Da man aus FlashBuilder standardmäßig nur *.air Files exportieren kann müssen hier auf die Konsole zurückgreifen. Das Packagingprogramm hierfür heißt ADT und befindet sich im bin Ordner des AIR sdks. Es gibt grundsätzlich zwei verschiedene Arten Native Installers zu erstellen:

  • aus dem Sourcecode eines AIR Projekts
  • aus einer bereits bestehenden AIR Datei

Dieser Aufruf erstellt eine Anwendung mit Native Installer für MacOS aus den Quelldaten der Applikation.

adt -package -storetype pkcs12 -keystore myCert.pfx -target native myApp.dmg main-app.xml main.swf

Folgender Aufruf erstellt eine Anwendung mit Native Installer für MacOS aus einer AIR Datei

adt -package -target native myApp.dmg myApp.air

Um einen Native Installer für Windows zu erstellen wird einfach anstatt myApp.dmg myApp.exe verwendet. Einschränkung: Native Installers können immer nur für das Betriebssystem erstellt werden das gerade genutzt wird. Will mal also ein *.exe für Windows erstellen muss ADT unter Windows aufgerufen werden.

Mehr Infos dazu auf der Adobe Hilfe.

NativeProcess API
Die NativeProcess Klasse bietet die Möglichkeit mit einem Systemprozess zu interagieren. Über die Funktionen start(info:NativeProcessStartupInfo):void und exit(force:Boolean = false):void werden Prozesse gestartet und beendet. Über die Eigenschaften running, standardError, standardInput und standardOutput kann der Prozess überwacht werden.

Der Funktion start() wird eine NativeProcessStartupInfo Objekt übergeben das Informationen zum Prozess enthält der gestartet werden soll. Die Eigenschaft executable muss eine Referenz auf die Datei enthalten die gestartet werden soll und über arguments kann eine Vector von Strings
mit Parametern angegeben werden.

var file = new File('/Applications/Firefox.app/Contents/MacOS/firefox-bin');
var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
nativeProcessStartupInfo.executable = file;
var process:NativeProcess = new NativeProcess();
process.start(nativeProcessStartupInfo);

Dies ist nur ein kleines Beispiel das natürlich beliebig erweiter werden kann. Schön ist auf jeden Fall, dass sich dadurch ganz neue Möglichkeiten für AIR Applikationen auftun. Der große Nachteil von AIR bleibt aber weiterhin, dass die AIR Runtime auf jeden Fall installiert werden muss, es ist also zum Beispiel kein Starten von CD möglich.

Links und weitere Beispiele: