it-swarm.com.de

Adobe AIR zum Ausführen des Programms

Ich möchte einen Knopf aus einer Adobe AIR-Anwendung drücken und ein installiertes Programm ausführen. Zum Beispiel hätte ich eine Schaltfläche namens "Winamp starten". Wenn dies gedrückt wird, sollte Winamp.exe direkt gestartet werden. Ich möchte nicht, dass ein Befehlszeilen-Befehl ausgeführt wird. Ich möchte nur, dass ein Exe gestartet wird. Oder ... ist es dasselbe? Bitte lassen Sie mich wissen, ob dies möglich ist.

Vielen Dank.

32
Manny Calavera

Es gibt keine direkte Möglichkeit, dies zu tun. Versuchen Sie CommandProxy .

Lesen Sie den Blogbeitrag sehr sorgfältig. Sie müssen wirklich zwei verschiedene Projekte erstellen: eine native ausführbare Betriebssystemdatei und eine AIR-App. Die native ausführbare Datei startet Ihre AIR-Anwendung. Die AIR-Anwendung fordert wiederum an, dass die ausführbare Datei Anforderungen auf Betriebssystemebene verarbeitet. 

Laden Sie die Quelle von Google Code herunter und erstellen Sie zwei Projekte - ein Visual Studio/Mono für das Beispiel C # exe und ein anderes - für die AIR-Anwendung. Hier ist ein Link, der beschreibt, wie der Erstere eingerichtet wird.

In der MXML-Datei Ihrer AIR-App müssen Sie Folgendes tun:

  • Erstellen Sie ein CommandProxy-Objekt, fügen Sie einige Ereignis-Listener für die Verbindungserkennung und Command-Antwort und -Fehler hinzu.

  • Stellen Sie über einen Aufruf von connect eine Verbindung zum nativen Exe her

  • Erstellen Sie im Ereignishandler für connect eine neue Command, z. ScreenshotCommand und führen Sie es aus (über die CommandProxy.execute-Methode)

... und das ist es!

Hoffe das hilft. 

11
dirkgently

Mit AIR 2.0 können Sie jetzt:

if(NativeProcess.isSupported)
{
    var file:File = File.desktopDirectory;
    file = file.resolvePath("StyleLookupold.exe");

    var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
    nativeProcessStartupInfo.executable = file;
    var process:NativeProcess = new NativeProcess();

    process.start(nativeProcessStartupInfo);

}

Sie müssen dies auch Ihrer Deskriptordatei hinzufügen.

<supportedProfiles>extendedDesktop</supportedProfiles> 
65
JD Isaacks

Die Antwort besteht aus zwei Teilen. Wenn Sie wirklich eine EXE-Datei ausführen MÜSSEN, ist die einzige Möglichkeit, einen Befehlsproxy zu verwenden. Persönlich ist die Verwendung von .Net/Mono etwas überhöht. Ich kenne Mono nicht, aber wenn Sie Ihre Benutzer bitten, .Net und AIR zu installieren, würde dies fast alles erschrecken. Wenn ich die Benutzer zur Installation von Mono auffordern würde, dann schreiben Sie einfach die Benutzeroberfläche in Mono und sind damit fertig ...?

Sie könnten einen einfachen Befehlsproxy in Ruby schreiben, der in etwa 5 Minuten wirklich plattformübergreifend und unkompliziert sein würde (ich habe es gerade getan, wenn Sie den Code hier haben wollen und ich ihn posten werde). Wenn Sie den Prozess nach dem Start steuern möchten, ist dies ein ernsthafteres Unterfangen. Für den Vertrieb usw. glaube ich, dass Ruby einfacher wäre.

Auf der anderen Seite , diese Idee überprüfen . Jeff schlägt vor, eine URL-Anfrage von AIR zu verwenden. Wenn Ihr Browser es richtig interpretiert, können Sie loslegen. Der Code sieht so aus

var request : URLRequest = new URLRequest('C:\\playlists\\test.m3u');

Ich denke, mit etwas Kreativität (besonders bei Mime-Typen) könnte diese zweite Lösung sogar für Winamp funktionieren (z. B. eine Playlist oder etwas anderes).

Viel Glück und vielen Dank für die Frage, die wahrscheinlich ein Betrug ist, aber Google hat nur diese gefunden, also hast du gewonnen :)

4
Dan Rosenstark

Ich denke, FluorineFx macht, was Sie wollen: http://aperture.fluorinefx.com/?p=5

3
user106085

AIR 2.0 wird diese Funktion haben.

Es wird erwartet, dass es bis zum Jahresende (2009) in der Beta erscheint und das erste Halbjahr 2010 ausliefert.

http://blogs.Adobe.com/air/2009/10/previewing_Adobe_air_2_at_adob.html

native Prozess-API Ab AIR 2 haben Entwickler Zugriff auf eine native Prozess-API, mit der Anwendungen native Anwendungen auf dem lokalen Computer aufrufen und mit ihnen kommunizieren können. Um den plattformübergreifenden Charakter des .air-Dateiformats zu erhalten, müssen Anwendungen, die die native Prozess-API nutzen, als native Installationsprogramme wie .exe und .dmg bereitgestellt werden. Das AIR-Laufzeit-SDK unterstützt die Generierung grundlegender Installationsprogramme.

3
user207377

Siehe diesen Blogeintrag: Ausführen einer Exe-Datei in AIR

Kurze Zusammenfassung: 

"Wenn Sie wirklich externe Exe-Dateien ausführen müssen und es keine andere Möglichkeit gibt, Ihr Problem zu lösen, dann stellen Sie Sicher, dass der Benutzer die [.____. .] eine andere Software, bevor Sie die Anwendung AIR starten. "

1
Assaf Lavie

Im Moment gibt es keine Möglichkeit, dies mit AIR nativ zu tun. Es gibt jedoch einige Optionen:

  • Shu
  • Red5 läuft auf localhost
  • Erstellen Sie einen Dienst, der auf dem Computer des Benutzers ausgeführt wird, und stellen Sie über sockets eine Verbindung zu ihm her.
1
Rhys Causey

Eine andere Möglichkeit besteht darin, einen einfachen Webserver auf einem lokalen Computer (im Hintergrund) zu starten und seine Methoden mit HTTPService aufzurufen.

Der Hintergrund-Webserver könnte beispielsweise in Python sein: http://fragments.turtlemeat.com/pythonwebserver.php

Das Programm kann ausführbare Dateien starten und bietet Funktionen, die AIR nicht bieten kann.

Dies hält den Flex-Code sauber, da er nur die Schnittstelle REST und Python (oder eine andere Sprache) für den Rest der Arbeit implementiert. Sie können auch von der Verwendung von Python als Schnittstelle zur sqlite-Datenbank profitieren oder ganz Django als Webserver starten.

Der einzige Nachteil ist, dass der Server bereits auf localhost ausgeführt werden muss und einen Port (z. B. 81) überwacht. Sie können dies wahrscheinlich tun, indem Sie den Server beim Systemstart starten.

Es ist nicht der beste Weg, aber in manchen Fällen könnte es Ihrem Projekt helfen, wie es für mich war.

1
Redliner

wenn Sie in Mac os x eine .app-Datei starten möchten, müssen Sie Folgendes für den Dateipfad angeben. (Angenommen, der Name der App ist xxx.)

if(NativeProcess.isSupported)
{
    //not correct
    //file = file.resolvePath("/Applications/xxx.app");

    //correct
    file = file.resolvePath("/Applications/xxx.app/Contents/MacOS/xxx");

    var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
    nativeProcessStartupInfo.executable = file;
    var process:NativeProcess = new NativeProcess();

    process.start(nativeProcessStartupInfo);

}
0
umut demirel

Oder einfach meine Website erstellen benutzerdefinierte Installer für neue Anwendung Lesen Sie mehr

http://board.flashkit.com/board/showthread.php?834579-Embed-exe-file-from-swf-to-write-to-local-directory

Bonus-Tipp: Wir empfehlen die Verwendung der Enigma Virtual Box, da diese kostenlos ist und sich sehr gut für Application Virtualization oder Exe-Packer wie BoxedApp Packer eignet. Die Enigma Virtual Box ist jedoch sehr teuer. Danke!

0
SourceSkyBoxer