Chrome 企业策略扩展中的 ExtensionInstallSources

ExtensionInstallSources in Chrome extensions for Enterprise policy

我们有 google chrome 扩展需要在我们的组织内部使用。我们在那里有域名。

基于enterprise options,对我们来说最简单的方法是将其托管在某个内部 Web 服务器上,然后通过组策略将该内部站点的地址作为 ExtensionInstallSources 选项添加到用户 PC,但这并不为我工作。

我已经尝试通过添加 Google Chrome adm\admx 文件来更改注册表和本地组策略。

这是我的注册表更改:

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\ExtensionInstallSources]
"1"="http://localhost/*"

当我检查 chrome://policy - 它显示它加载了这个设置。但是当我打开 http://localhost/myextension.crx - Chrome 仍然显示无法从那里安装扩展的错误...

我在 Windows 8.1 Enterprise (x64) 下使用 47.0.2526.106 m(64 位) 我在这里做错了什么?

我有更复杂的选项可以下载 chrome source\pdbs,然后尝试调试它以了解它为什么不起作用,但可能会花费很多时间,因为 Chrome 可以在 Windows 上编译几个小时,第一次构建....

显然,这种注册表更改还不够。在调试 chrome 源之后,我发现了为什么它对我不起作用。我错过了:

  1. referer 必须存在并且它也应该被列入白名单。因此,如果我通过直接 link 为我的扩展打开 url,那么由于缺少引用 - 它不会安装它。 (哦Chrome,至少你可以用关于它的消息说......)。如果我的网页具有该扩展名 link,并且它也被列入白名单,那么它将正常工作。

  2. 第二个遗漏点是扩展 ID 必须存在于 ExtensionInstallWhitelist 中,否则 Chrome 将安装它并延迟 2-3 秒将其禁用。但是如果你把它列在了ExtensionInstallWhitelist下,那就没问题了。

所以我对 localhost 的最终注册表更改是:

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome]

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\ExtensionInstallSources] "1"="http://localhost/*"

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\ExtensionInstallWhitelist] "1"="fhojekmcngnmkdbcoegjdlojgfngkpak"

我在 ExtensionManagement 调试了很久才找到的 class - https://code.google.com/p/chromium/codesearch#chromium/src/chrome/browser/extensions/extension_management.cc&q=ExtensionManagement::IsOffstoreInstallAllowed&sq=package:chromium&type=cs&l=148