从桌面软件包安装Safari扩展程序
我们有一个OSX桌面软件,以Mac安装程序包的形式分布在Mac App Store之外。我们想要做的是在安装期间安装Safari扩展以及桌面应用程序。从桌面软件包安装Safari扩展程序
步骤中,我们已经做了:
- 我们有工具链准备成功生成pkg程序包为我们的桌面应用程序。
- 还签署了
safariextz
包创建准备就绪。 - 两者都可以单独安装,但将Safari扩展与桌面pkg安装程序一起打包即可。
是否可以用pkgbuild或productbuild做到这一点?
如果你的扩展是一个Safari App Extension,Safari浏览器会自动检测到扩展(在显示它的Safari>首>扩展),只要:
- 扩展位于您应用程序包中的适当路径(
PlugIns
文件夹)。 - 你的应用程序包安装在
/Applications
。 - 您的应用程序包已正确使用您的开发者ID进行了签名。
但是,扩展将默认为禁用,只有用户可以通过Safari首选项启用它。 (没有API,以使Safari浏览器应用扩展,虽然有API来query its state,并open the Safari preferences for the extension。)
如果您的扩展使用创建的older method using Safari Extension Builder(我假定它是,既然你提到.safariextz
),然后不幸的是,only two permitted methods of installing it are:
- 点击扩展程序库中安装按钮。
- 在Safari中打开(
.safariextz
)文件。 (Safari浏览器会提示用户确认安装。)
苹果警告:
重要:这些都是安装Safari浏览器扩展唯一允许的方式。您不应该试图以任何其他方式安装您的扩展。
事实上,他们已经采取措施,难以使用创意方法以任何其他方式安装扩展。(可能阻止恶意应用程序/安装从用户强加于扩展不知情的情况下。)
这就是说,你可以将现有扩展到Safari浏览器应用扩展转换没有太多工作,并you are strongly encouraged by Apple to do so:
重要提示:从macOS 10.11.5上的Safari 10.0开始,Safari扩展在Xcode中作为应用程序扩展创建。新的扩展包裹在一个包含macOS应用程序中,并在App Store上分发和销售。如果您使用本文档中描述的方法创建了扩展,请考虑转换到新的扩展模型。
(注:您不必通过Mac App Store中发布你的应用程序提供了Safari浏览器应用扩展 - 开发者ID签名的应用程序应该工作了。)
这将净你的好处Safari App Extensions的安装流程要简单得多。