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