flash flex air command

flash - Adobe AIR para ejecutar el programa



flex command (10)

AIR 2.0 tendrá esta capacidad.

Se espera que salga en beta para fin de año (2009) y se envíe la primera mitad de 2010.

http://blogs.adobe.com/air/2009/10/previewing_adobe_air_2_at_adob.html

API de proceso nativa A partir de AIR 2, los desarrolladores tendrán acceso a una API de proceso nativa que permitirá a las aplicaciones invocar y comunicarse con aplicaciones nativas en la máquina local. Para preservar la naturaleza multiplataforma del formato de archivo .air, las aplicaciones que aprovechan la API de proceso nativa se deben implementar como instaladores nativos, como .exe y .dmg. El SDK de tiempo de ejecución de AIR incluirá soporte para generar instaladores nativos básicos.

Me gustaría presionar un botón de una aplicación de Adobe AIR y ejecutar algún programa instalado. Por ejemplo, tendría un botón llamado "Iniciar Winamp". Cuando se presiona esto, debe iniciar Winamp.exe directamente ... No quiero que se ejecute algo de línea de comandos, solo quiero que se inicie un exe. O es la misma cosa ? Por favor, avíseme si esto es posible.

Gracias.


Con AIR 2.0 ahora puede:

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); }

También necesita agregar esto a su archivo descriptor.

<supportedProfiles>extendedDesktop</supportedProfiles>



En este momento, no hay forma de hacerlo de forma nativa con AIR. Sin embargo, hay algunas opciones:

  • Shu
  • Red5 corriendo en localhost
  • Cree un servicio que se ejecute en la máquina del usuario y conéctelo utilizando sockets .

La respuesta viene en dos partes. Uno, si realmente DEBE ejecutar un archivo .exe, la única manera de hacerlo es usar un proxy de comando. Personalmente, usar uno en .Net / Mono es un poco exagerado. No conozco a Mono, pero pedirles a los usuarios que instalen .Net y AIR los atemorizaría a todos. Además, si iba a pedirles a los usuarios que instalen Mono, ¿por qué no simplemente escribir la interfaz de usuario en Mono y terminar con eso ...?

Podrías escribir un proxy de comando simple en Ruby, que realmente sería multiplataforma y de baja dificultad en unos 5 minutos (lo acabo de hacer, si quieres que el código me comente aquí y lo publique). Si quieres controlar el proceso después de su lanzamiento, es un esfuerzo más serio. Para la distribución, etc., creo que Ruby sería más fácil.

Por otro lado , revisa esta idea . Jeff sugiere usar una solicitud de URL de AIR. Básicamente, si su navegador lo interpreta correctamente, ya está listo para comenzar. El código se ve así

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

Creo que, con un poco de creatividad (especialmente con los tipos Mime), esta segunda solución podría funcionar incluso para Winamp (por ejemplo, una lista de reproducción o algo así).

Buena suerte y gracias por la pregunta, que probablemente sea un engaño, pero Google solo encontró esta, así que has ganado :)


No hay forma directa de hacerlo. Pruebe CommandProxy .

Lea la publicación del blog con mucho cuidado. Realmente necesita crear dos proyectos diferentes: un ejecutable de sistema operativo nativo y una aplicación de AIR. El ejecutable nativo activa su aplicación de AIR. La aplicación AIR, a su vez, solicita que el ejecutable procese las solicitudes de nivel de sistema operativo.

Descargue la fuente de Google Code y cree dos proyectos: un Visual Studio / Mono para la muestra C # exe y otro para la aplicación AIR. Here hay un enlace que describe cómo configurar el primero.

En el archivo MXML principal de su aplicación AIR, debe hacer lo siguiente:

  • Cree un objeto CommandProxy , agregue algunos detectores de eventos, para detección de conexión, y respuesta y error de Command .

  • Conéctese al exe nativo a través de una llamada de connect

  • En el controlador de eventos para connect , crea un nuevo Command por ejemplo, ScreenshotCommand y CommandProxy.execute (a través del método CommandProxy.execute )

... ¡y eso es!

Espero que esto ayude.



Otra forma de hacerlo es lanzar un servidor web simple en la máquina local (en segundo plano) y llamar a sus métodos utilizando HTTPService.

El servidor web de fondo podría ser, por ejemplo, en Python: http://fragments.turtlemeat.com/pythonwebserver.php

Y puede ejecutar ejecutables y proporcionar funcionalidades que AIR no puede.

Esto mantiene el código Flex limpio porque solo implementa la interfaz REST y python (u otro idioma) el resto del trabajo. También puede beneficiarse del uso de python como una interfaz para la base de datos sqlite o puede iniciar django completo como un servidor web.

El único inconveniente es que el servidor ya debe estar ejecutándose en localhost ... y escuchando algún puerto (es decir, 81). probablemente puedas hacer esto iniciando el servidor al inicio del sistema.

No es la mejor manera, pero en algunos casos podría ayudar a su proyecto como lo hizo por mí.


Ver esta publicación en el blog: ejecuta un archivo exe desde AIR

Breve resumen:

"Si realmente necesita ejecutar archivos exe externos, y no hay otra manera de resolver su problema, entonces se asegurará de que el usuario ejecute ese otro software antes de iniciar la aplicación de AIR".


en mac os x, si desea iniciar un archivo .app, debe escribir lo siguiente para la ruta del archivo. (Suponga que el nombre de la aplicación es 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); }