首页 > 解决方案 > 如何在 App Bundle 中嵌入 Automator Action 以进行交付

问题描述

我使用的是 Objective-c Xcode 11,macOS 不是 iOS。

我在objective-c中有一个沙盒小应用程序。为了使其更易于访问,我添加了脚本支持,因此开发了一些 Automator 操作。

我想将它们嵌入到应用程序包中,这样用户就不需要单独安装它们。

关于文档,这可以通过将它们放在应用程序包中来实现,如下所示:

myapp.app/Library/Automator/actionHere

我尝试了什么:

我创建了一个存档并将完成的产品(自动化操作)复制到我的应用程序文件夹(在查找器中)并将其添加到项目中(不复制)。然后我添加了一个复制文件阶段以将其复制到上面的文件夹(选择'Wrapper'+'Library/Automator')。我尝试了“在副本上签名”和没有。

不幸的是,应用程序的签名因“根目录中存在未密封的内容”而失败 - 没有它构建的自动化操作。

两个应用程序的代码签名和证书的团队 ID 匹配。基本标识符相同,例如 com.mycompany.product 和 com.mycompany.product.automator.action1

然后我尝试将 Automator 项目嵌入为子项目。但这完全失败了......

我如何将 Automator 项目添加为主应用程序项目的子项目并在上述目录中获得最终自动化,或者如何将已经代码签名的 Automator 操作正确添加到应用程序中,以便代码签名不会失败。

问候帕特

标签: objective-cmacosautomatorcodesign

解决方案


自动化操作

  • 创建用于分发的存档
  • 使用与您的主应用程序相同的证书对其进行代码设计

主应用

  • 将最终产品复制到您的主应用程序(在查找器中)并将其添加到您的项目中
  • 从“复制资源”构建阶段中删除它
  • 创建新的复制文件阶段(在复制资源阶段之后),选择“资源”并输入“库/自动化”
  • 将其添加到新的复制文件阶段

测试一下

  • 创建主应用程序的存档
  • 将产品复制到应用程序文件夹(重要 - 否则 OSX 不会安装操作
  • 打开 Automator,您应该在那里找到您的操作。如果没有 - 重新启动。

推荐阅读