MAC OS X上的单声道El Capitan:LSOpenURLsWithRole

时间:2015-10-17 06:18:17

标签: c# macos mono

我有一个在Linux和MAC上运行在Mono上的.NET软件。该软件在OSX Lion下的Mono 3.6.0上以 Macpack 打包为.app,并使用PackageMaker创建了一个安装程序。它在所有新版本的OSX上工作正常,直到El Capitan触发以下错误:

LSOpenURLsWithRole() failed with error -10810 for the file .../Applications/MyApp.app

我已经移动了El Capitan上的开发文件,并设法用 Maco 打包 Mono 4.0.4.4 。使用

时似乎没有显示错误
open -a MyApp.app

现在唯一的问题是它不会在双击时启动。该软件由安装程序安装在/ Applications中。它通过打开命令从控制台开始,但不是双击。有没有办法通过模拟从控制台双击来查看错误或其他内容?

PS。同样在El Capitan上,唯一可行的Mono框架是最新的4.0.4.4或为El Capitan设计的4.2.1。二进制文件的新位置在/ usr / local / bin而不是/ usr / bin中,只有在安装之前存在/ usr / local / bin时才有效,否则将无法识别mono命令。

由于

3 个答案:

答案 0 :(得分:2)

这里也有同样的问题(El Capitan)。多数民众赞成我如何解决(Mono 4.2.1)

1)创建一个空脚本并替换macpack创建的脚本(例如:KeePass.app/Contents/MacOS/KeePass)

2)使用mono和exe文件的完整路径

#!/bin/sh
DIR=$(cd "$(dirname "$0")"; pwd) 
/usr/local/bin/mono $DIR/../Resources/KeePass.exe

我认为这在某种程度上与系统完整性保护(csrutil)有关但不确定。

答案 1 :(得分:1)

  

LSOpenURLsWithRole()失败,文件错误为-10810   ... /应用/ MyApp.app

听起来它可能是权限问题,但-10810可能意味着很多事情,而且我从来没有看到对该错误号的回应,这个错误号对于它的原始错误(它自PowerPC时代以来一直存在)。已经指出了权限,外部驱动器访问和实际的Launch Services守护程序。

  • 重新启动(或手动终止并重新生成这些服务,包括Finder / Spotlight)
  • ls -l /Application/YourApp.app并检查是否标记为可执行文件
  • ls -l /Application/YourApp.app/Contents/MacOS/YourApp并检查是否已标记为可执行
  • 打开Console.app并重试双击您的应用并查看记录的警告/错误。
  • ...

搬到El Capitan?然后你需要Mono版本4.2.x或4.0.4.4。

来自Mono邮件列表:

  

适用于Mac的最新Mono 4.0.4.4软件包有什么区别   和4.2.1 El Capitan预览? 4.0.4.4的更改日志包括   “33585:El Capitan系统完整性保护支持。”所以我想   4.0.4.4也适用于El Capitan?。

Miguel de Icaza的回复:

  

One基于Mono 4.0系列,只需进行最少的更改即可启用   对El Capitan的支持; 4.2之上有相同的变化   最新的Mono 4.2,可在Alpha和候选版本上获得。

参考:http://sushihangover.github.io/osx-10-dot-11-el-capitan-which-mono-version/

答案 2 :(得分:1)

由于尚未修复,您可以使用此临时修复程序。打包 macpack 后打开app文件夹,然后转到/ Contents / MacOS并编辑启动脚本中的最后一个if:

MONO_PATH="/usr/bin/mono"

cd "$APP_PATH/Contents/Resources"

if [ "$X11_MODE" -eq "1" ]; then
        open-x11 "$APP_NAME"
else
        if [ -f "/usr/local/bin/mono" ]; then MONO_PATH="/usr/local/bin/mono" ; fi
        "$MONO_PATH" "$ASSEMBLY"
fi