2012-03-08 8 views
23

Dockには表示されないアプリケーションをログイン時に起動するオプションを取得しようとしています。これはやりにくく、起動項目として追加するヘル​​パーアプリケーションを2つ作成する必要があります。このヘルパーアプリは、メインアプリを起動してから終了する役割しか果たしません。複数のターゲットを持つプロジェクトのコード署名の問題

私は指示herehereに従ってきました。それは魅力的です。もちろん、問題はコード署名です。私には2つの目標があります。ヘルパーアプリターゲットはコンパイル時にメインバンドルのサブディレクトリ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. 

私は私のメインターゲットからヘルパーバンドルを削除した場合、ノーがあります問題。別のプロビジョニングプロファイルが存在するため、エラーが発生しているようです。

署名入りのバンドルを2つ含めることができますか?

+0

私はまったく同じ問題を抱えています... – mirosval

+0

今のところ、私はサンドボックスを無効にしました。アップルがXcodeを修正するか、サンドボックスの期限を延期するまでは、一時的な「解決策」だ。 –

+0

これは私の問題を解決しません、私は資格を無効にする場合、私はまだ検証をパスしない、私はヘルパーアプリ自体を削除する場合にのみ渡します... – mirosval

答えて

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 Production Certificateを使用して、ヘルパーアプリとメインアプリケーションの両方に署名する必要があります。 Xcodeでこれを試したことはありません。バンドルリソースであるヘルパーアプリケーションがありますが、コード署名はコマンドラインスクリプトです。私たちはアプリストアシステムに何の問題もありませんでした。

ビルドされた製品のプロビジョニングプロファイルがなぜ完成しているのかわかりませんが、これはアプリストアの提出には必要ないと思います。手動で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

2つの問題:バンドルを見ると、実際には 'embedded.provisionprofile'というファイルがありますが、' codesign'を使用しようとすると、 'object file format unrecognized、invalid、または不適切です'。これについての考えは? –

+0

私はそのエラーを見たとは思わない。あなたは '.app'バンドルに署名していますか、それとも単に実行可能ファイルですか?私は、実行ファイルに直接署名しようとすると問題が発生したことを覚えていますが、それでもうまくいくようです。プロファイルは必要ではありません(少なくとも私たちはそれに何ら問題はありません)。それを削除して署名しようとするとどうなりますか? – wbyoung

+1

Ash Furrow - これを解決しましたか? – tomtaylor

0

私は同じ問題を抱えていました。ヘルパ・アプリケーションからembedded.provisionprofileを削除する代わりに、プロビジョニング(プロビジョニング・プロファイル:なし)を無効にして、コード署名の識別とエンタイトルメントをそのまま残しました。私のアプリを何の問題もなくレビューのために提出しました。

関連する問題