如何使用 C# 在 OSX 中正确运行 chmod?
Posted
技术标签:
【中文标题】如何使用 C# 在 OSX 中正确运行 chmod?【英文标题】:How to run properly chmod in OSX with C#? 【发布时间】:2019-11-24 06:19:44 【问题描述】:我和这里How run chmod in OSX with C#有同样的问题
我想通过 Unity 中的代码更改权限 我试过了:
ProcessStartInfo startInfo = new ProcessStartInfo()
FileName = "chmod",
Arguments = "+x " + "Game.app/Contents/MacOS/Game"
;
Process proc = new Process() StartInfo = startInfo, ;
proc.Start();
但不起作用,有什么建议吗?
【问题讨论】:
欢迎来到 ***!你能再指定doesn't work
吗?任何异常/错误?有什么事情发生吗?你传递了正确的参数/路径吗?
没有错误但不起作用,我通过终端尝试了相同的命令,一切正常
你确定你的代码被调用/执行了吗? (断点和调试)
是的,我确定。也许我添加了错误的论点?
可能路径不正确?我不知道 ios 上 Unity 的相对路径如何工作。也许你必须指定startInfo.WorkingDirectory
【参考方案1】:
我不确定,但也许你首先必须打开例如bash
然后将 chmod
调用作为参数传入 -c
之类的东西
ProcessStartInfo startInfo = new ProcessStartInfo()
FileName = "/bin/bash",
Arguments = "-c \" chmod +x Game.app/Contents/MacOS/Game\" ",
CreateNoWindow = true
;
Process proc = new Process() StartInfo = startInfo, ;
proc.Start();
当然仍然假设路径是正确的。
也许还会添加一些回调,例如
proc.ErrorDataReceived += (sender, e) =>
UnityEngine.Debug.LogError(e.Data);
;
proc.OutputDataReceived += (sender, e) =>
UnityEngine.Debug.Log(e.Data);
;
proc.Exited += (sender, e) =>
UnityEngine.Debug.Log(e.ToString());
;
proc.Start();
【讨论】:
还是一样的结果, 我在 Exited Delegate 中看到结果 (ExitCode) 1 好吧,所以至少我们知道该命令已执行并且由于某种原因失败(退出代码 1)也许首先你应该尝试运行"-c \"ls Game.app/Contents/MacOS/Game\""
并查看是否找不到相应的文件
啊,秒。我看到了问题。我的游戏名称中有空格(Test Game.app)当我删除空格时一切正常
我替换了名称 Test\" 游戏和作品。非常感谢您的宝贵时间以上是关于如何使用 C# 在 OSX 中正确运行 chmod?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 xampp 在 OSX 上正确设置 php_gmp
Mac OSX文件权限有'@' - 如何删除'@' [关闭]