【问题标题】:.exe file behaves differently when run from Unity to when open manually.exe 文件从 Unity 运行到手动打开时的行为不同
【发布时间】:2020-11-15 08:40:04
【问题描述】:

我正在尝试从 Unity 运行 .exe。当我通过双击手动打开 .exe 时,它​​可以完美运行,但在 Unity 中,它只是打开然后根本不起作用。

.exe 是一个非常基本的 python 脚本(我将其制成可执行文件),它读取一个文本文件,然后创建另一个文件。当从 Unity 运行时,可执行窗口说这个文件不存在/找不到,当我知道它存在时,然后立即关闭。

我试过用这些方法运行这个 .exe:

Application.OpenURL(path);

还有:

Process.Start(path);

当我单击 .exe 时,它​​运行得非常好,并且除了那个文本文件之外没有任何依赖项或任何其他内容。

如何从代码中运行这个文件,就像它刚刚被点击一样?

【问题讨论】:

  • 查看进程启动的启动参数。将开始目录设置为就好像您只是执行 path/my.exe file.txt 它不会在该文件的路径中查找,但可能是它认为您所在的位置,也可以由您的应用程序移动
  • 将 StartInfo.WorkingDirectory 设置为我的文件文件夹的路径现在已经完美运行,有什么办法可以将其标记为这个解决方案吗?
  • 但我可以将其发布为答案,但您也可以这样做并获得积分。就像一个好人一样,你接受了提示并解决了问题:) 我宁愿你得到积分

标签: c# unity3d exe executable


【解决方案1】:
process = new Process();
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.FileName = path;
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.StartInfo.ErrorDialog = false;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.EnableRaisingEvents = true;
process.Start();

但我认为您的路径无效。你能 Debug.Log 它并在评论中写下它是什么吗?顺便说一句,它应该是绝对路径

【讨论】:

  • 路径是:C:/Users/user/Desktop/Search.exe('user'是我的计算机名)如果.exe确实打开并运行(它只是没有工作正常)这意味着路径是正确的?我也尝试过使用 Application.dataPath 和 Application.persistentDataPath 获得相同的结果。
  • 是的,很抱歉我的评论不正确,我现在已经编辑了。 Search.exe 是文件的名称。
  • 你的用户名是英文的吗?
  • 是的。我现在可以使用您的代码和上面的 BugFinders 评论帮助设置目录,我只是不知道如何将其设置为正确答案。
【解决方案2】:

解决方案是这样定义进程的目录:

 Process p = new Process();
 p.StartInfo.FileName = path + "app.exe";
 p.StartInfo.WorkingDirectory = path;
 p.Start();

path 是 app.exe 所在文件夹的路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多