2013-06-07 1 views
0

Je tire mes cheveux.Problème avec NativeProcess

J'ai un projet Flash Professional CS6 utilisant ActionScript 3.0 et Adobe AIR 2.7.

J'ai une classe très importante qui utilise NativeProcess pour communiquer avec un exécutable de ligne de commande. Cela fonctionne parfaitement lorsque je débogue le programme dans Flash Professional, mais dès que je l'empaquette pour Adobe AIR (profil étendu de bureau), le programme installé ne répondra à rien parce qu'il se bloque silencieusement sur ce code. Il ne plante pas, il arrête simplement d'exécuter du code.

file = File.applicationDirectory.resolvePath("deepcore/" + module + ".exe"); 
startup.executable = file; 
process.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, addToBuffer); 
process.start(startup); 

Quand je en commentaire startup.executable = file et process.start(startup), il fonctionne très bien.

J'ai vérifié et vérifiez que la version déployée prend en charge NativeProcess (NativeProcess.isSupported renvoie true.)

Tous mes importations fonctionnent correctement.

Pourquoi mon code me déteste-t-il?

Répondre

1

Hah, d'accord, je me sens un peu bête maintenant.

Mon chemin, vous le remarquerez peut-être, se trouve dans le répertoire de l'application. Lors du débogage dans Flash, le chemin "deepcore/*. Exe" est présent (avec * étant le nom du module). Cependant, après l'installation, cela ne fonctionne plus car le chemin n'existe pas dans le répertoire de l'application installée et il n'y avait aucune disposition pour les répertoires de fichiers non fonctionnels.

Dans les paramètres de publication, j'ai ajouté le dossier deepcore et tout a bien fonctionné. (Et oui, j'ai ajusté mon code pour vérifier l'existence d'un fichier.)

Questions connexes