2015-10-17 85 views
3

我有一個運行在Mono上的Linux和MAC上的.NET軟件。該軟件打包爲.app與Macpack在Mono 3.6.0 OSX Lion下創建,並使用PackageMaker創建了一個安裝程序。它好工作在OSX所有新版本,直到埃爾卡皮坦觸發以下錯誤:MAC OS X上的單聲道Capitan:LSOpenURLsWithRole

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

我搬到上埃爾卡皮坦發展的文件,並設法從單聲道4.0 Macpack收拾它。 4.4。它似乎沒有表明使用時出現錯誤

open -a MyApp.app 

現在唯一的問題是它不會在雙擊時啓動。該軟件安裝在安裝程序的/應用程序中。它從控制檯開始很好,打開命令,但不是雙擊。有沒有辦法通過模擬從控制檯的雙擊來看到錯誤或其他?

PS。另外在El Capitan,似乎能夠工作的唯一Mono框架是最新的4.0.4.4或爲El Capitan 4.2.1設計的框架。二進制文件的新位置在/ usr/local/bin而不是/ usr/bin中,只有在安裝前存在/ usr/local/bin時纔有效,否則mono命令將無法識別。

感謝

+0

回覆:與macpack包裝打開app文件夾,然後轉到/內容/ MacOS和編輯最後,如果別人從你的啓動腳本後,單聲道的版本;這是正確的,無論是4.0.4.4還是4.2.1都是El Capitan支持的版本。從/ usr/bin移動到/ usr/local/bin是El Capitan的要求,因爲沒有第三方應該修改/ usr/bin中的任何內容。在全新安裝之前/ usr/local/bin不存在的問題是已知問題。 – SushiHangover

+0

至於你的啓動問題,你看看Console.app?在雙擊過程中報告的任何錯誤?可能是燙髮問題,應用程序包中的啓動程序二進制文件是否具有正確的權限,並且應用程序包本身是否標記爲可執行文件? – SushiHangover

回答

1

由於沒有修復,您可以使用此臨時修復。

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 
1

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

聽起來像它可能是權限問題,但-10810可能意味着很多東西,我從來沒有看到這是明確的,以原來的錯誤號的響應(它有自PowerPC日以來一直)。權限,外部驅動器訪問權限和實際的啓動服務守護進程已被指向。

  • 重新啓動(或手動殺死和重生這些服務,包括搜索/聚光燈)
  • LS -l /Application/YourApp.app並檢查被標記爲可執行的
  • LS -l /應用/ YourApp .app/Contents/MacOS/YourApp並檢查被標記爲可執行文件
  • 打開Console.app並重試雙擊您的應用程序並查看記錄的警告/錯誤。
  • ...

移動到埃爾卡皮坦?然後您需要Mono版本4.2.x或4.0.4.4。

從單郵件列表:Miguel de Icaza的

What is the difference between the latest Mono 4.0.4.4 package for Mac and the 4.2.1 El Capitan Preview? The changelog of 4.0.4.4 includes 「33585: El Capitan System Integrity Protection support.」 so i suppose that the 4.0.4.4 also works on El Capitan?.

回覆:

One is based on Mono 4.0 series, with minimal changes just to enable the support on El Capitan; The 4.2 has the same changes, on top of the latest Mono 4.2, available on Alpha and the release candidate.

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

+0

嘿RobertN,這是我在系統日誌查詢中得到的內容:Oct 17 00:34:16 Daniels-MBP com.apple.xpc.launchd [1](MyApp.111072 [1451]):退出異常代碼的服務: 127 –

+0

丹尼爾斯-MBP:SCA丹尼爾$ CD /應用/ 丹尼爾斯-MBP:應用丹尼爾$ LS -l MyApp.app/ 總0 drwxrwxr-×5根管理170 10月16日13時25分內容 丹尼爾斯-MBP:應用程序daniel $ ls -l MyApp.app/Contents/MacOS/ total 8 -rwxrwxr-x 1 root admin 1411 Oct 16 13:11 MyApp –

+0

錯誤127是命令/文件未找到;是您的啓動應用程序(在您的應用程序中是否包含腳本?),在/ usr/bin或...中找到單聲道硬編碼還是...? – SushiHangover

2

同樣在這裏的問題(埃爾卡皮坦)。多數民衆贊成我是如何解決(單聲道4.2.1)

1)創建一個空的腳本,並替換由macpack創建(如:KeePass。應用/內容/ MacOS /作用的KeePass)

2)使用完整路徑,單聲道和exe文件

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

我認爲是主題相關的系統完整性保護(csrutil),但不能肯定。

+0

這是一個只能在El Capitan上運行的臨時修復程序:/ usr/local/bin/mono「$ ASSEMBLY」如果您想在之前的版本中運行,您必須將單聲道路徑更改爲/ usr/bin/mono .. 。 –

+1

系統完整性保護不允許您運行「which」,因爲它位於/ usr/bin中。 – rcruzs00

+0

好的,那麼我們可以用什麼來代替'which'來定位單聲道,因爲它可以位於基於OSX版本的兩個不同位置。 –