我把头发拉了出来。
我有一个使用ActionScript 3.0和Adobe AIR 2.7的Flash Professional CS6项目。
我有一个非常重要的类,它使用NativeProcess与命令行可执行文件通信。当我在Flash Professional中调试程序时,它运行得很好,但是一旦我将它打包为Adobe AIR(扩展桌面配置文件),安装的程序就不会响应任何内容,因为它正在静静地挂起这段代码。它不会崩溃,只是停止运行代码。
file = File.applicationDirectory.resolvePath("deepcore/" + module + ".exe");
startup.executable = file;
process.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, addToBuffer);
process.start(startup);
当我评论startup.executable = file
和process.start(startup)
时,它可以正常工作。
我检查并仔细检查部署的版本是否支持NativeProcess(NativeProcess.isSupported返回true。)
我的所有导入都正常运行。
为什么我的代码讨厌我?
答案 0 :(得分:1)
您可能会注意到,我的路径位于应用程序目录中。在Flash中进行调试时,会出现“deepcore / * .exe”路径(*为模块名称)。
但是,安装后,这不再有效,因为已安装的应用程序目录中不存在该路径,并且没有提供非工作文件目录。
在发布设置中,我添加了deepcore文件夹,一切正常。 (是的,我调整了我的代码以检查文件是否存在。)