0 Replies Latest reply on Dec 8, 2014 2:44 AM by Raacom

    AIR NativeProcess on Mac gives Error:3219, all solutions failing

    Raacom

      hi guys,

       

      I've read up most solutions for this error and none seem to apply.

       

      I'm running a basic AS3 app in FlashBuilder, on OS-X.

       

      • descriptor is set to extendedDesktop
      • have set the profile in FB to 'extendedDesktop'
      • am publishing as 'signed native installer'
      • I've tried launching the file from both:
      • app:/demo.sh
      • file:///Users/visualife/Desktop/AE/demo.sh
      • the target file is set to 777 (executable)
      • the target file runs fine when directly targetted
      • i'm running the exe on the same OS and machine it's created on
      • changing the 'demo.sh' file to a jpg etc doesn't change anything

       

      No matter what I try I get told native process is support, everything runs fine until start is called then a Error: 3219 is thrown with no further information.

       

      all help greatly appreciated!

       

      I've included my code below:

       

      package {
         import flash.desktop.NativeProcess;
         import flash.desktop.NativeProcessStartupInfo;
         import flash.display.Sprite;
         import flash.errors.IllegalOperationError;
         import flash.events.Event;
         import flash.events.IOErrorEvent;
         import flash.events.NativeProcessExitEvent;
         import flash.events.ProgressEvent;
         import flash.filesystem.File;
         import flash.text.TextField;
      
         public class VauxhallController extends Sprite {
      
         private var debug_txt:TextField;
      
         public var process:NativeProcess;
         private var sh:File;
      
         public function VauxhallController() {
         if (stage) {
        init();
         } else {
         this.addEventListener(Event.ADDED_TO_STAGE, init);
         }
         }
      
         private function init($e:Event=null):void {
         this.removeEventListener(Event.ADDED_TO_STAGE, init);
      
        build();
      
         if (NativeProcess.isSupported) {
        initListeners();
      
        debugMe("Native process supported");
      
        go();
         } else {
        debugMe("Native not supported");
         }
         }
      
         private function build():void {
         // debug
        debug_txt  = new TextField();
        debug_txt.width = 300;
        debug_txt.height= 600;
         this.addChild(debug_txt);
      
         }
         private function initListeners():void { }
         private function go():void {
        runShellFile();
         }
      
         private function runShellFile():void {
         var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
         var essArgs:Vector.<String> = new Vector.<String>();   
         var file:File; 
      
        file  = File.desktopDirectory.resolvePath("AE/demo.sh");
      
        nativeProcessStartupInfo.executable = file;
        nativeProcessStartupInfo.workingDirectory  = File.desktopDirectory;
        nativeProcessStartupInfo.executable = file;
      
        process = new NativeProcess();
        process.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onOutputData);
        process.addEventListener(ProgressEvent.STANDARD_ERROR_DATA, onErrorData);
        process.addEventListener(NativeProcessExitEvent.EXIT, onExit);
        process.addEventListener(IOErrorEvent.STANDARD_OUTPUT_IO_ERROR, onIOError);
        process.addEventListener(IOErrorEvent.STANDARD_ERROR_IO_ERROR, onIOError);
      
         try {
        process.start(nativeProcessStartupInfo);
         } catch (error:IllegalOperationError) {
        debugMe(error.toString());
         } catch (error:ArgumentError) {
        debugMe(error.toString());
         } catch (error:Error) {
        debugMe(error.toString());
         }
         }
      
         public function onOutputData(event:ProgressEvent):void {  debugMe("Got: "+ process.standardOutput.readUTFBytes(process.standardOutput.bytesAvailable));   }
         public function onErrorData(event:ProgressEvent):void {  debugMe("ERROR: "+ process.standardError.readUTFBytes(process.standardError.bytesAvailable));   }
         public function onExit(event:NativeProcessExitEvent):void { debugMe("Process exited with: "+ event.exitCode);   }
         public function onIOError(event:IOErrorEvent):void {  debugMe("IOError: "+ event.toString());   }
      
         private function debugMe(_str:String):void {  debug_txt.appendText(_str +"\n");   }
         }
      }