如何在使用 py2app 构建的应用程序中捆绑 FinderSync 扩展

How to bundle FinderSync Extension in an App built using py2app

我正在尝试添加 FinderSync Extension in an App which is built using py2app

py2app 没有捆绑应用程序扩展的方法,所以我创建了一个 Cocoa 项目并添加了一个 FinderSync 扩展目标。构建 appex 后,我将 appex 复制到 Plugins 文件夹下使用 py2app 构建的应用程序。

FinderSync 扩展设置为使用授权文件进行沙盒化,但是当我启动主应用程序时,控制台应用程序上显示了以下消息。

9/17/15 10:33:50.212 AM pkd[309]: ignoring mis-configured plug-in at /Applications/Test.app/Contents/Plugins/TestFinderSync.appex: plug-ins must be sandboxed

我在 Stack Overflow 上搜索过,但找不到解决方案。

我在这里错过了什么?

为了使其正常工作,您应该提供插件中的授权文件。

MyPlugin.entitlements

<?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>

并使用您的证书对插件进行代码签名:

codesign --sign <cert> --entitlements <path to entitlements file> --force <path to bundle>/Contents/PlugIns/MyPlugin.appex

此外,如果您从 Swift 源构建插件,请确保将所有必需的 Swift*dylibs 捆绑在 Contents/Frameworks

希望对您有所帮助