我们有一个用于 OSX 的桌面软件,以 pkg 安装程序包的形式在 Mac App Store 之外分发。我们想要做的是在安装期间安装一个Safari 扩展和桌面应用程序。
我们已经完成的步骤:
- 我们已经准备好为我们的桌面应用程序成功生成 pkg 包的工具链。
- 签名
safariextz
包的创建也准备好了。 - 两者都可以单独安装,但将 Safari 扩展与桌面 pkg 安装程序一起打包会更好。
pkgbuild 或 productbuild 是否可以做到这一点?
我们有一个用于 OSX 的桌面软件,以 pkg 安装程序包的形式在 Mac App Store 之外分发。我们想要做的是在安装期间安装一个Safari 扩展和桌面应用程序。
我们已经完成的步骤:
safariextz
包的创建也准备好了。pkgbuild 或 productbuild 是否可以做到这一点?
如果您的扩展程序是Safari App Extension,只要满足以下条件,Safari 就会自动检测到该扩展程序(并将其显示在Safari > Preferences > Extensions中):
PlugIns
文件夹)中的适当路径中。/Applications
.但是,该扩展默认为禁用,只有用户可以通过 Safari 偏好设置启用它。(没有 API 可以启用 Safari 应用程序扩展,尽管有 API 可以查询其状态,并打开扩展的 Safari 首选项。)
如果您的扩展是使用 Safari Extension Builder 使用旧方法创建的(我认为它是,因为您提到.safariextz
了),那么不幸的是,安装它的唯一两种允许的方法是:
- 通过单击扩展库中的安装按钮。
.safariextz
通过在 Safari 中打开 ( ) 文件。(Safari 会提示用户确认安装。)
苹果警告:
重要提示:这些是安装 Safari 扩展程序的唯一允许方式。您不应尝试以任何其他方式安装您的扩展程序。
而且,事实上,他们已采取措施使使用创造性方法以任何其他方式安装扩展程序变得困难。(可能是为了防止恶意应用程序/安装程序在用户不知情的情况下强加扩展程序。)
也就是说,您可能无需太多工作就可以将现有扩展转换为 Safari 应用扩展,Apple 强烈鼓励您这样做:
重要提示:从 macOS 10.11.5 上的 Safari 10.0 开始,Safari 扩展在 Xcode 中创建为应用程序扩展。新的扩展被包装在一个包含 macOS 应用程序中,并在 App Store 上分发和销售。如果您使用本文档中描述的方法创建了扩展,请考虑转换到新的扩展模型。
(注意:您不必通过 Mac App Store 分发您的应用程序来提供 Safari 应用程序扩展 - 开发人员 ID 签名的应用程序也应该可以工作。)
这将为您带来 Safari App Extensions 安装流程更简单的好处。