2012-03-08 61 views
23

我試圖讓我的應用程序沒有出現在Dock中,以便有登錄時啓動的選項。這很棘手,涉及創建第二個助手應用程序,您將其添加爲啓動項目。這個幫手應用程序只負責啓動主應用程序,然後退出。具有多個目標的項目的代碼簽名問題

我按照說明herehere,它的作用就像一個魅力 - 問題當然是代碼簽名。我有兩個目標;幫助程序目標在編譯時被複制到主包的Contents/Library/LoginItems子目錄中。每個包都有自己的包標識符和自己的部署配置的個人資料,但是當我確認我昔日的應用程序商店,我得到以下錯誤:

Invalid provisioning profile. The provisioning profile included in the bundle BUNDLE NAME [BUNDLE NAME.app] is invalid. For more information, visit the Mac OS Developer Portal. 

如果我從我的主要目標刪除助手捆綁,也沒有問題。它看起來像另一個配置文件的存在正在引發錯誤。

如何包含兩個簽名包並通過驗證?

+0

我有完全相同的問題... – mirosval 2012-03-10 19:12:06

+0

現在,我禁用了沙盒。這是一個非常臨時的「解決方案」,只有在Apple修復了Xcode或停止推遲沙箱期限之後才能起作用。 – 2012-03-10 19:22:48

+0

這不解決問題,我仍然不通過驗證,如果我禁用權利,我會通過只有當我刪除幫助程序本身... – mirosval 2012-03-10 21:43:52

回答

8

我終於可以通過同事的計算機上使用codesign來解決這一問題(必須已經與我的鑰匙扣一些錯誤),並通過刪除助手應用程序的embedded.provisionprofile文件添加以下運行腳本:

if [ -f "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/Contents/embedded.provisionprofile" ]; 
then 
    rm "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/Contents/embedded.provisionprofile" 
    echo "Removed embedded provisioning profile." 
else 
    echo "No profile found" 
fi 
3

您應該使用相同的Mac App Store生產證書來簽署助手應用程序和主應用程序。我沒有在Xcode中試過這個 - 我們有一個幫助器應用程序,它是一個bundle資源,但我們的代碼簽名是一個命令行腳本。我們對應用商店系統沒有任何問題。

我不確定你爲什麼要在構建的產品中配置配置文件,我認爲這不是應用商店提交所必需的。您可以嘗試使用手動codesign

codesign -f -s "3rd Party Mac Developer Application: My Company" \ 
    -i "com.mycompany.loginitem" \ 
    --entitlements path/to/loginitem.entitlements" \ 
    path/to/appname.app/Contents/Library/LoginItems/loginitem.app 

codesign -f -s "3rd Party Mac Developer Application: My Company" \ 
    -i "com.mycompany.appname" \ 
    --entitlements path/to/app.entitlements" \ 
    path/to/appname.app 
+0

有兩個問題:如果我查看包,我確實看到一個文件embedded.provisionprofile,如果我嘗試使用'codesign',我得到以下錯誤:'對象文件格式無法識別,無效或不適合'。對此有何想法? – 2012-03-16 14:04:20

+0

我不認爲我見過這個錯誤。你正在簽署'.app'包還是隻是一個可執行文件?我記得在嘗試直接簽署可執行文件時遇到問題,但似乎即使這對我也很好。應該不需要配置文件(至少我們沒有任何問題) - 如果您刪除它並嘗試簽名,會發生什麼? – wbyoung 2012-03-17 02:07:59

+1

Ash Furrow - 你有沒有解決這個問題? – tomtaylor 2012-05-20 15:14:59

0

我有同樣的問題。我剛剛禁用了配置(配置文件:無),而不是從幫助程序應用程序中刪除embedded.provisionprofile,而是留下了代碼簽名標識和權利。提交我的應用程序審查沒有任何問題。

相關問題