Mac app store帮助工具Sandboxing

时间:2012-11-01 08:08:19

标签: app-store code-signing helpers monomac appstore-sandbox

我的应用包含两个可执行文件

  • 主应用程序可执行文件
  • 用于处理某些文件的小型控制台应用程序,此可执行文件位于Resources文件夹(不需要root权限)

问题是我不知道如何将此应用程序提交到appstore,我从苹果获得以下回复

  

签名无效 - 路径appname.app上的主应用程序包appname已签名但签名无效。协同设计报告了以下错误:   密封的资源丢失或无效   在架构中:i386

如果我删除帮助应用程序,它会绕过此错误,但应用程序根本无法运行。任何人都知道如何嵌入帮助应用程序并将其核心地签名到appstore的好方法或示例??

Apple文档对此并不清楚。

1 个答案:

答案 0 :(得分:7)

您需要同时签署主应用和辅助控制台工具

签名.app已记录在案,因此我向您介绍了如何对助手进行编码。

  • 手动创建权利文件并将其添加到帮助程序项目(您可以从主应用程序中复制一个并删除不必要的权利密钥)
  • 按照Adding an Info.plist to Single-File Tools中的说明创建一个Info.plist(此步骤不是强制性的,但如果您发现帮助程序崩溃,请尝试添加它)

如果主应用程序启动帮助工具,则需要添加

com.apple.security.inherit

这在Enabling App Sandbox Inheritance

中有所描述

如果主应用程序以其他方式与帮助程序交互,则可能需要XPC通信,或者如果您幸运,则使用App Group

就足够了

这样的东西
<key>com.apple.security.application-groups</key>
<array>
    <string>$(TeamIdentifierPrefix)my.package</string>
</array>

查看AppSandboxLoginItemXPCDemo

根据我的经验,TeamIdentifierPrefix在开发环境中必须为空,并在您提交给MAS时设置为team id,请谨慎处理我对TeamIdentifierPrefix的考虑(即自己动手)