从桌面软件包安装 Safari 扩展

Installing Safari Extension from Desktop Software Package

我们有一个 OSX 的桌面软件,以 pkg 安装程序包的形式在 Mac App Store 之外分发。我们想要做的是安装 Safari 扩展程序 以及桌面应用程序 在安装过程中

我们完成的步骤:

是否可以使用 pkgbuild 或 productbuild 实现此目的?

如果您的扩展程序是 Safari App Extension,Safari 应该会自动检测扩展程序(并在 Safari > 首选项 中显示它> 扩展) 只要:

  1. 该扩展程序位于您的应用程序包中的适当路径(PlugIns 文件夹)。
  2. 您的应用程序包安装在 /Applications
  3. 您的应用程序包已使用您的开发者 ID 正确签名。

但是,该扩展将默认禁用,只有用户可以通过 Safari 偏好设置启用它。 (没有 API 来启用 Safari 应用程序扩展,尽管有 API 到 query its state, and to open the Safari preferences for the extension。)


如果您的扩展程序是使用 older method using Safari Extension Builder (which I presume it is, since you mentioned .safariextz), then unfortunately the only two permitted methods of installing it are 创建的:

  1. By clicking an Install button in the Extensions Gallery.
  2. By opening the (.safariextz) file in Safari. (Safari will prompt the user to confirm the installation.)

Apple 警告:

Important: These are the only permitted ways to install a Safari extension. You should not attempt to install your extension any other way.

而且,事实上,他们已采取措施使使用创造性方法以任何其他方式安装扩展变得困难。 (可能会阻止恶意应用程序/安装程序在用户不知情的情况下将扩展程序强加给他们。)

也就是说,您可以将现有的扩展程序转换为 Safari 应用程序扩展程序而无需太多工作,并且 you are strongly encouraged by Apple to do so:

Important: As of Safari 10.0 on macOS 10.11.5, Safari extensions are created as app extensions in Xcode. New extensions are wrapped in a containing macOS app and are distributed and sold on the App Store. If you have created an extension with the methods described in this document, consider transitioning to the new extensions model.

(注意:您不必通过 Mac App Store 分发您的应用程序来提供 Safari 应用程序扩展 - 开发者 ID-signed 应用程序也应该可以工作。)

这将使您受益于更简单的 Safari 应用程序扩展安装流程。