Provision 目录与打包

组织浏览器定制包,分发默认文件和插件,并区分安装目录数据与实例数据。

Provision 是浏览器安装侧的定制包,提供内置插件、发行元数据、可选的默认授权与配置文件,以及固定网络规则。各项能力需要对应的 License 授权

找到根目录

平台标准 Chrovia 位置
Windows浏览器可执行文件旁的 Chrovia
macOSChrovia.app/Contents/Chrovia
Linux浏览器可执行文件旁的 Chrovia,以该平台发行包是否可用为准

定制发行包可能使用不同的目录名。应使用实际发行包提供的目录,而不是根据用户数据目录猜测位置。macOS 上它位于 Contents 下,不在 Contents/MacOS 下。

Chrovia/
  manifest.json
  Chrovia License
  Extended Preferences
  dnr_rules.json
  Extensions/
    chrovia-infra/
      manifest.json
      background.js
    my-plugin/
      manifest.json
      background.js
      index.html

License、EP 初始文件及 DNR 文件是否需要,取决于部署方式。保留插件已有资源;上述目录树用于说明文件职责,不是完整的发行文件清单。

每个文件的职责

文件格式与行为
manifest.json发行元数据 JSON 对象,不是 Chrome 扩展清单,也不是插件选择列表
Chrovia License仅在用户数据目录没有 License 时使用的只读回退文件
Extended Preferences向没有 EP 的用户数据目录复制一次,不覆盖已有实例文件
dnr_rules.json固定规则 JSON 数组,需要 declarativeNetRequest
Extensions/<目录>/manifest.json单个内置插件的 Chrome 扩展清单

最小发行包清单:

{
  "version": "1.0.0"
}

拥有 instanceMetadata 的授权代码可以通过 chrovia.instanceMetadata?.provision?.manifest 读取它。修改发行包版本不会修改插件版本、License 或已有 EP 文件。

共享安装目录,独立实例

每个 --user-data-dir 保存自己的浏览器数据。从同一可执行文件启动的实例共享 Provision 包。将插件放入安装目录后,这些实例都可加载它;把插件放在某个用户数据目录中,并不会将其安装为 Provision 插件。

需要不同插件集合时,应准备不同浏览器安装包,只包含当前 SDK 发行包支持的插件。

没有 Provision 时,浏览器没有 Provision 插件及相关定制。用户数据目录中的 License 仍能授权内核能力,但需要租约的部署还必须具有正常工作的续租集成。

内置页面 URL

支持 Provision URL 的配置,例如导航重定向,可以按插件目录名引用页面:

provision-extension://my-plugin/index.html

仅在明确支持此形式的配置中使用。其他浏览器 API 可能要求普通 chrome-extension:// URL,应从已安装扩展获取。保持插件目录名称稳定,不要复用从其他平台复制的扩展 ID。

打包与更新

  1. 为目标产品准备完整的 Provision 目录树。
  2. 复制到可执行文件旁,或 macOS 应用包的 Contents 下。
  3. 安装有效 License,以及需要时正确签名的 EP 文件。
  4. 完全重启浏览器,核对已加载插件和配置。

更改 EP 初始文件不会迁移现有用户数据目录。应明确更新实例文件,并重新签名已签名字段。替换回退 License 也不会覆盖用户数据目录中优先级更高的 License。

替换包前,备份自定义插件和配置。核对最终安装目录包含全部目标插件,以及需要时位于根目录的 dnr_rules.json。不要假设更新会保留此前手动加入安装目录的文件。

接下来阅读内置插件安装与开发