AppStore拒绝使用带有外部构建控制台二进制文件的MacOS应用程序沙盒

AppStore拒绝使用带有外部构建控制台二进制文件的MacOS应用程序沙盒,macos,app-store,executable,codesign,appstore-sandbox,Macos,App Store,Executable,Codesign,Appstore Sandbox,我有2个MacOS应用程序要提交到appstore。一个几乎是控制台程序的GUI;另一个是独立的应用程序,但大量使用另一个控制台程序 这两个控制台程序二进制文件都是开源的、MIT许可的,但都有非常外部和特定的构建环境(包括cmake等),将它们与我的应用程序集成到构建中是不必要的(也是一件痛苦的事情)。所以我想构建它们,然后将它们嵌入到各自的应用程序中 我将它们嵌入,并在启用应用程序沙盒的情况下进行测试。一切正常。然而,当我试图提交给苹果商店时,他们声称: 错误ITMS-90296:“未启用应用

我有2个MacOS应用程序要提交到appstore。一个几乎是控制台程序的GUI;另一个是独立的应用程序,但大量使用另一个控制台程序

这两个控制台程序二进制文件都是开源的、MIT许可的,但都有非常外部和特定的构建环境(包括cmake等),将它们与我的应用程序集成到构建中是不必要的(也是一件痛苦的事情)。所以我想构建它们,然后将它们嵌入到各自的应用程序中

我将它们嵌入,并在启用应用程序沙盒的情况下进行测试。一切正常。然而,当我试图提交给苹果商店时,他们声称:

错误ITMS-90296:“未启用应用程序沙盒。以下可执行文件必须在权限属性列表中包含布尔值为true的“com.apple.security.App sandbox”权限:[(“MWAPPTECH.MyApp.pkg/Payload/TheHider.App/Contents/Resources/myconsolebinear”)]有关对应用程序进行沙箱处理的更多信息,请参阅的应用程序沙箱页面。“

“”似乎不存在

根据我的研究,似乎我必须以某种方式对这些控制台可执行文件进行代码设计。我试图自己对可执行文件进行代码设计,但结果完全失败了


我完全沉浸在这件事中。你有什么想法吗?

在我的例子中,我嵌入了Perl:这个简单的代码设计命令添加了适当的权限,之后上传工作正常:

codesign-v-f——签署“开发者ID应用程序:BlahBlah”——授权staticPerl.authoritions$perlEmbedRoot/bin/staticPerl5.30.0

权利文件中包含以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"     "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.app-sandbox</key>
    <true/>
    <key>com.apple.security.inherit</key>
    <true/>
</dict>
</plist>
哦,这是可执行文件的路径,相对于应用程序的资源文件夹,concat在一起,它适合system()函数,也许:

NSBundle *bund = [NSBundle mainBundle];
self.resourcePath = [bund resourcePath];
self.perlExe = @"./perlembed/bin/staticPerl5.30.0 -I./perlembed/lib/";

试试这个。是的,您必须为包中的所有二进制文件签名并启用沙箱限制。否则,如果应用程序可以使用助手二进制文件绕过沙盒,那么沙盒就没有意义了。导致完全失败的描述方式不能帮助我们帮助您。你具体做了什么?当你这样做的时候发生了什么?为了澄清,你能提供你的例子的文件夹树吗?
NSBundle *bund = [NSBundle mainBundle];
self.resourcePath = [bund resourcePath];
self.perlExe = @"./perlembed/bin/staticPerl5.30.0 -I./perlembed/lib/";