自动安装Google Chrome扩展程序无效!

dev*_*ile 5 registry installer nsis external google-chrome-extension

我正在从事与此页面相关的工作

我编写了一个NSIS脚本,试图自动安装chrome扩展.(为什么?因为我们的扩展可以通过复选框提供另一个产品安装流程,然后如果用户选择我们要添加的扩展,它将使用NSIS静默安装在用户chrome浏览器上自动安装)

我尝试了很多场景,我需要帮助,在谷歌网站上,他们说你可以做到这一点

  • 使用首选项JSON文件
  • 使用Windows注册表

他们还说"使用首选项文件"有一个错误(Windows注意:在修复错误41902之前,您可能希望使用Windows注册表而不是首选项文件.)

提醒:自动安装的扩展名称为外部扩展

  • 所以我尝试了"使用Windows注册表"

要通过注册表添加Google Chrome扩展程序:

  • 添加此密钥:"HKEY_LOCAL_MACHINE\SOFTWARE\Google\Chrome\Extensions(我的扩展ID)"
  • 添加"path"以及.crx的路径
  • 添加"版本"与扩展的版本

这是我尝试过的(使用NSIS脚本):

  • 如果我添加一个注册表项它将安装扩展,但如果用户手动卸载,chrome会打开黑名单标记,并且无法使用任何其他脚本重新安装扩展.剩下的唯一方法是用户手动安装.最糟糕的是,如果用户手动安装并手动卸载(它将关闭黑名单标志),并且当重新启动chrome时,它将自动重新安装扩展(无需任何用户操作),因为注册表项仍然存在.

  • 如果我在启动或关闭浏览器时删除注册表项,通过一种怪异的方式(在crx中使用dll(NPAPI)),Chrome将在浏览器重新启动时自动删除扩展目录.

  • 如果我设法在用户卸载扩展时删除注册表项.我们被列入黑名单,因此在用户通过手动安装和卸载扩展程序关闭黑名单标志之前,自动安装程序将不再起作用.

  • 如果我在"C:\ Users \(用户名)\ AppData\Local\Google\Chrome\User Data\Default\Extensions \(extensionID)\(版本)_0 \(我的文件在这里)"中创建目录,我遇到了很麻烦因为chrome会在重新启动浏览器后立即删除我的文件.

有没有人遇到过这个问题,需要做些什么.我将尝试使用JSON文件,但在修复bug之前,Registry是唯一的方法.

感谢有时间阅读所有这些的人!任何帮助将不胜感激,谢谢!

gka*_*pak 2

[ 2013-11-11 ]
\n[这个问题的答案即将过时,所以这里有一个更新的答案。]

\n\n
\n\n

根据Chromium 博客上最近的一篇文章,在不久的将来自动安装 Chrome 扩展程序将不会成为一种选择:

\n\n
\n

从 [2014]1 月开始,在 Windows 稳定版和测试版渠道上,我们\xe2\x80\x99 将要求所有扩展程序都托管在 Chrome 网上应用店中。

\n
\n\n

作为替代方案,开发人员和供应商将能够使用内联安装功能:

\n\n
\n

如果您的扩展程序当前托管在 Chrome 网上应用店之外,您应该尽快迁移它们。这不会对您的用户产生影响,他们仍然可以使用您的扩展程序,就像没有发生任何变化一样。如果您愿意,您可以将扩展程序从 Web Store 列表中隐藏起来。如果您自己的网站有专用的安装流程,则可以利用现有的内联安装功能。

\n
\n\n
\n\n

所以,基本上,您需要做的是:

\n\n
    \n
  1. 将您的扩展程序托管在 Chrome Web Store 上(可以选择将其从列表中隐藏)。
  2. \n
  3. 让安装人员打开指向您网站上网页的 Chrome 浏览器窗口。
  4. \n
  5. 该页面上包含用户启动扩展安装过程所需的所有信息和数据。(这里的关键概念是用户必须启动安装过程,例如通过单击按钮。
  6. \n
\n\n
\n\n

内联安装如何工作:

\n\n
\n

您网站上要进行内联安装的 HTML 页面必须在引用用户可以安装的项目的部分中包含一个或多个标记。每个标签必须具有以下格式:

\n
\n\n
<link rel="chrome-webstore-item" href="https://chrome.google.com/webstore/detail/itemID">\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n

要真正开始内联安装,必须调用 chrome.webstore.install(url, successCallback, failureCallback) 函数。该函数只能在响应用户手势时调用,例如在单击事件处理程序中;如果不是,则会抛出异常。

\n
\n\n

(强调我的)

\n\n

有关内联安装功能的更多信息。

\n