如何在OSX上为python应用程序启用App沙箱(python应用程序针对Mac App Store)

时间:2013-04-17 04:26:06

标签: python sandbox mac-app-store

首先,python应用程序是针对Mac App Store的。 Apple通过电子邮件告诉我,我的应用程序未启用沙箱。

如下:

  

亲爱的开发人员,

     

我们发现您最近为“ InternetWorks ”投放了一个或多个问题。要处理您的交付,必须纠正以下问题:

     

应用沙箱未启用 - 以下可执行文件必须包含“ com.apple.security.app-sandbox ”权利,其中布尔值为true >权利属性列表。有关沙盒化应用程序的更多信息,请参阅App Sandbox页面。

     

InternetWorks.app/Contents/MacOS/InternetWorks

     

更正这些问题后,请转到“版本详细信息”页面,然后点击“准备上传二进制文件”。继续完成提交过程,直到应用状态为“等待上传”。然后,您可以提供更正的二进制文件。

     

此致

     

App Store团队

由于我的应用程序是用Python编写的,我不知道如何为它制作权利属性列表

从Apple的文档中,授权属性列表是在Xcode项目中创建的,并且以某种方式与可执行文件相关。但同样,我的应用程序是用Python编写的,它只需要几个* .py文件,我已经使用py2app / cx_Freeze工具将它打包到“my_app_name.app”可执行文件中。

那么,是否可以手动为我已经打包的python应用程序(My_App_name.app文件)创建/创建权利属性列表文件,如何在没有XCode项目的情况下执行此操作?

提前致谢。

1 个答案:

答案 0 :(得分:0)

对于某些上下文,在中配置.entitlements 的界面如下screenshot

它会自动在$(SOURCE_ROOT) AppName.entitlements中创建一个文件。

.plist是Apple用于几乎所有“传统”unix上的文本配置文件的XML文件。如果您在OSX上使用Python进行开发,您可能会发现Python plistlib很有帮助。 Apple有幸使用XCode编辑它们(before XCode4 there was a stand-alone Property List Editor.app)。

在这种情况下,他们想要的默认值只包含:

<?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/>
</dict>
</plist>

我怀疑如果您只是将其粘贴到名为InternetWorks.entitlements的文件中,您就可以解决他们的问题。虽然您可能需要更多the available permissions