如何在 OSX 上为 Python 应用程序启用 App 沙箱(Python 应用程序针对 Mac App Store)
Posted
技术标签:
【中文标题】如何在 OSX 上为 Python 应用程序启用 App 沙箱(Python 应用程序针对 Mac App Store)【英文标题】:How to enable App sandbox for a python app on OSX (The python app is targeted for Mac App Store) 【发布时间】:2013-04-17 04:26:05 【问题描述】:首先,python 应用程序是针对 Mac App Store 的。 苹果给我发邮件说我的应用没有启用沙盒。
如下:
尊敬的开发者,
我们发现您最近交付的“InternetWorks”存在一个或多个问题。要处理您的交付,必须更正以下问题:
未启用应用沙盒 - 以下可执行文件必须在 中包含布尔值为 true 的“com.apple.security.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】:在某些情况下,在xcode4 中配置.entitlements
plist 的界面类似于。
它会自动在您的$(SOURCE_ROOT)
中创建一个名为AppName.entitlements
的文件。
.plist
s 是 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。
【讨论】:
感谢您的回答。这和我做的差不多。我终于通过以下步骤弄清楚了:\n 1)手动创建一个 InternetWorks-Entitlements.plist 文件;(是的,这只是一个 xml 文件) 2)发出这个命令:codesign --entitlements ./InternetWorks-Entitlements.plist -s "My Cert here" ./InternetWorks.app
无论如何,我通过了验证。还是谢谢大家。以上是关于如何在 OSX 上为 Python 应用程序启用 App 沙箱(Python 应用程序针对 Mac App Store)的主要内容,如果未能解决你的问题,请参考以下文章
如何在 OSX 上为 XAMPP 安装 PHP MongoDB 驱动程序?
如何在 OSX 上为 TUN 接口设置 IP 地址(没有目标地址)?
如何在 macos 上为 ffmpeg 启用 libx264
如何在 Mac OS X 上为 Python 3 安装 pip?