Actionscript AdobeAIR本机进程仅在flash环境中工作,但部署时出现错误#3219

Actionscript AdobeAIR本机进程仅在flash环境中工作,但部署时出现错误#3219,actionscript,process,air,desktop,native,Actionscript,Process,Air,Desktop,Native,我一直在尝试将ffmpeg与我在flash cs5.5中制作的air应用程序结合使用。我拥有它,因此ffmpeg.exe需要位于安装air应用程序的目录中(File.applicationDirectory.nativePath) 出于某种原因,这只在我通过flashdev环境运行程序时起作用。但当我实际部署应用程序时,我得到了错误#3219:NativeProcess无法启动。ffmpeg.exe位于同一文件夹中 我实际上不知道它给出的完整消息…不确定当我捕获它时,错误的属性会给我该消息。我只

我一直在尝试将ffmpeg与我在flash cs5.5中制作的air应用程序结合使用。我拥有它,因此ffmpeg.exe需要位于安装air应用程序的目录中(File.applicationDirectory.nativePath)

出于某种原因,这只在我通过flashdev环境运行程序时起作用。但当我实际部署应用程序时,我得到了错误#3219:NativeProcess无法启动。ffmpeg.exe位于同一文件夹中

我实际上不知道它给出的完整消息…不确定当我捕获它时,错误的属性会给我该消息。我只知道这是错误3219

这是个人资料问题吗?如果我没有扩展桌面配置文件,我不认为我能得到这个错误,我会得到一个配置文件错误,不是吗


我还禁用了用户访问控制…我正在使用Windows7

需要提及的一点是(我相信您已经知道)NativeProcess仅在编译它的操作系统上工作,因此如果在windows box上编译,则NativeProcess将仅在windows上工作,而不会在unix/mac上工作

我不知道您如何调用本机进程,但这里有一个我从我的一个工作类中提取的代码片段,也许将它与您的aproach进行比较,它会给您一些提示来发现问题:)

导入flash.desktop.*;
导入flash.errors.*;
导入flash.events.*;
导入flash.filesystem.*;
公共函数execute():void
{
var executablePath:String=“C:\ffmpeg.exe”;
var参数字符串:String=“-i input.avi-b 64k output.avi”;
if(NativeProcess.isSupported){
变量args:Vector.=新向量。();
var file:file=新文件(字符串(executablePath));
var参数:数组;
parameters=parametersString.split(“”);
对于每个(变量参数:参数中的字符串){
参数推送(参数);
}
}
var nativeProcessStartupInfo:nativeProcessStartupInfo=new nativeProcessStartupInfo();
nativeProcessStartupInfo.executable=文件;
nativeProcessStartupInfo.arguments=args;
startExecution(nativeProcessStartupInfo);
}
专用函数startExecution(nativeProcessStartupInfo:nativeProcessStartupInfo):无效
{
var nativeProcess:nativeProcess=new nativeProcess();
nativeProcess.addEventListener(NativeProcessExiteEvent.EXIT,onExitError);
var msg:String=“”;
试一试{
nativeProcess.start(nativeProcessStartupInfo);
跟踪(“尝试启动流程”);
}捕获(错误:非法操作错误){
跟踪(“非法操作:+error.toString());
}捕获(错误:ArgumentError){
跟踪(“参数错误:+Error.toString());
}捕获(错误:错误){
跟踪(“错误:+Error.toString());
}
if(nativeProcess.running){
跟踪(“本机流程支持”);
}
}
公共函数onExitError(事件:NativeProcessExiteEvent):无效
{
跟踪(“本机进程退出代码:“+event.exitCode”);
}

所以我是OP,我刚刚意识到如果不通过exe安装程序安装air应用程序,就不能使用本机进程调用,这是发布设置中的一个选项。我一直在使用air安装程序。

我一直在想这个问题,谢谢你的提醒。
        import flash.desktop.*;
        import flash.errors.*;
        import flash.events.*;
        import flash.filesystem.*;

        public function execute():void
    {
                    var executablePath:String = "C:\ffmpeg.exe";
                    var parametersString:String = "-i input.avi -b 64k output.avi";

        if(NativeProcess.isSupported) {

            var args:Vector.<String> = new Vector.<String>();
                var file:File = new File(String(executablePath));
            var parameters:Array;
            parameters = parametersString.split(" ");
            for each ( var parameter:String in parameters ) {
                    args.push(parameter);
            }
        }

        var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
        nativeProcessStartupInfo.executable = file;
        nativeProcessStartupInfo.arguments = args;

        startExecution(nativeProcessStartupInfo);
    }

    private function startExecution(nativeProcessStartupInfo:NativeProcessStartupInfo):void
    {
        var nativeProcess:NativeProcess = new NativeProcess();
                nativeProcess.addEventListener(NativeProcessExitEvent.EXIT, onExitError);
            var msg:String = "";

                try {
                    nativeProcess.start(nativeProcessStartupInfo);
                    trace("Trying to start process");
                } catch (error:IllegalOperationError) {
                    trace("Illegal Operation: "+error.toString());
                } catch (error:ArgumentError) {
                    trace("Argument Error: "+error.toString());
                } catch (error:Error) {
                    trace("Error: "+error.toString());
                }

                if (nativeProcess.running) {
                    trace("Native Process Support");
                }
    }

    public function onExitError(event:NativeProcessExitEvent):void
    {
        trace("Native Process Exit code: "+event.exitCode);
    }