Adobe AIR pour exécuter le programme

j'aimerais appuyer sur un bouton d'une application Adobe AIR et exécuter un programme installé. Par exemple, j'aurais un bouton nommé "Start Winamp". Quand ceci est pressé il devrait commencer Winamp.exe directement...Je ne veux pas qu'un truc en ligne de commande soit exécuté, je veux juste qu'un exe commence. Ou...est-ce la même chose ? S'il vous plaît, faites-moi savoir si c'est possible.

je vous Remercie.

32
demandé sur Chris 2009-03-23 05:06:29

10 réponses

il n'y a aucun moyen direct de le faire. Essayez CommandProxy.

lisez le billet du blog très attentivement. Vous avez vraiment besoin de créer deux projets différents: un exécutable natif OS et une application AIR. L'exécutable natif démarre votre application AIR. L'application AIR demande à son tour l'exécutable pour traiter les requêtes au niveau OS.

télécharger la source de Google Code et créer deux projets -- un Studio visuel / Mono pour l'échantillon C# exe et un autre ... pour L'application aérienne. Ici est un lien qui explique comment configurer l'ancien.

dans le fichier MXML principal de votre application AIR, vous devez faire ce qui suit:

  • Créer un CommandProxy objet, ajoutez un peu d'écouteurs d'événement, pour la détection de connexions, et Command réponse et l'erreur.

  • se Connecter à la maternelle exe via un connect appel

  • Dans le gestionnaire d'événement pour connect, créer un nouveau Command e.g. ScreenshotCommand et l'exécuter (via CommandProxy.execute méthode)

... et c'est tout!

J'espère que cela vous aidera.

11
répondu dirkgently 2009-03-26 03:10:49
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);

}

Vous devez également ajouter ceci à votre fichier descripteur.

<supportedProfiles>extendedDesktop</supportedProfiles> 
65
répondu JD Isaacks 2009-12-17 15:25:43

La réponse est en deux parties. Un, si tu dois vraiment gérer un .exe file, la seule façon d'y aller est d'utiliser une commande proxy. Personnellement, en utiliser un dans .Net/Mono est un peu exagéré. Je ne sais pas Mono, mais demander à vos utilisateurs d'installer .Net et L'AIR les aurait presque tous effrayés. De plus, si j'allais demander aux utilisateurs d'installer Mono, pourquoi ne pas simplement écrire L'interface utilisateur En Mono et en finir avec elle...?

Vous pouvez écrire un simple proxy de commande dans Ruby qui serait vraiment cross-platform and low hassle en environ 5 minutes (je viens de le faire, si vous voulez que le code ME commenter ici et je vais le poster). Si vous voulez contrôler le processus après son lancement, c'est plus sérieux. Pour la distribution, etc. Je crois que Ruby serait plus facile.

d'un autre côté,cochez cette idée. Jeff suggère d'utiliser une requête D'URL de L'AIR. En gros, si votre navigateur l'interprète correctement, vous êtes prêt à partir. Le code ressemble comme ceci

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

je pense que, avec un peu de créativité (avec les types Mime, en particulier), cette deuxième solution pourrait même fonctionner pour Winamp (par exemple. une liste de lecture ou de quelque chose).

Bonne chance et merci pour la question, ce qui est probablement une dupe, mais Google ne trouve de ce si vous avez gagné :)

4
répondu Dan Rosenstark 2009-07-20 10:14:38

je pense que FluorineFx fait ce que vous voulez: http://aperture.fluorinefx.com/?p=5

3
répondu user106085 2009-08-05 13:56:22

AIR 2.0 aura cette capacité.

il est prévu de sortir en bêta d'ici la fin de l'année (2009) et la première moitié de l'année 2010.

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

API de processus Natif En commençant par AIR 2, les développeurs auront accès à une API de processus natif qui permettra aux applications d'invoquer et de communiquer avec des applications natives sur la machine locale. Afin de préserver la croix-plate-forme de la nature de l' .air file format, les applications qui tirent parti de l'API processus natif doivent être déployés en tant qu'installateurs natifs tels que .exe et .DMG. Le SDK AIR runtime comprendra la prise en charge de la génération des installateurs natifs de base.

3
répondu 2009-11-09 23:10:23

Voir cet article de blog: Exécuter un fichier exe à partir de l'AIR

résumé:

"Si vous avez vraiment besoin pour exécuter externe les fichiers exe, et il n'y a pas d'autre moyen de la résolution de votre problème, alors vous aurez assurez-vous que l'utilisateur exécute que un autre logiciel avant de lancer la Application aérienne."

1
répondu Assaf Lavie 2009-03-23 02:23:00

pour l'instant, il n'y a aucun moyen de le faire nativement avec de l'AIR. Il y a quelques options, mais:

  • Shu
  • Red5 en cours d'exécution sur localhost
  • créer un service qui tourne sur la machine de l'utilisateur et s'y connecter en utilisant sockets.
1
répondu Rhys Causey 2009-03-23 02:26:44

une autre façon de faire cela est de lancer un simple serveur web sur une machine locale (en arrière-plan), et d'appeler ses méthodes en utilisant HTTPService.

le serveur web d'arrière-plan pourrait être par exemple en python: http://fragments.turtlemeat.com/pythonwebserver.php

et il peut lancer des exécutables et fournir des fonctionnalités que L'AIR ne peut pas.

cela maintient le code Flex propre parce qu'il implémente seulement L'interface REST et python (ou un autre langage) le reste de travail. Vous pouvez également profiter de l'utilisation de python comme une interface à la base de données sqlite ou vous pouvez lancer django entier comme un serveur web.

le seul inconvénient est que le serveur doit déjà tourner sur localhost .. et écouter du port (ie. 81). vous pouvez probablement le faire en lançant le serveur au démarrage du système.

Ce n'est pas la meilleure façon mais dans certains cas, il peut aider votre projet comme il l'a fait pour moi.

1
répondu Redliner 2010-02-10 09:22:45

dans mac os x, si vous souhaitez lancer une .app file, puis vous devez écrire ce qui suit pour le chemin du fichier. (À supposer que le nom de l'application est 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
répondu umut demirel 2013-09-27 13:45:29

Ou simple mon site créer des installer à nouveau l'application en savoir plus

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

Bonus Tip: Nous vous recommandons d'utiliser Enigma Virtual Box car il est gratuit et très bon pour la virtualisation des applications ou Exe-Packer comme BoxedApp Packer mais il coûte très cher que Enigma Virtual Box Merci!

0
répondu SourceSkyBoxer 2015-10-06 17:50:09