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

时间:2011-05-04 18:10:32

标签: installer registry google-chrome-extension external nsis

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

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

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

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

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

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

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

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

  • 添加此密钥:“HKEY_LOCAL_MACHINE \ SOFTWARE \ Google \ Chrome \ Extensions(我的扩展ID)”
  • 添加“path”以及.crx
  • 的路径
  • 使用扩展程序的版本添加“version”

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

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

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

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

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

是否有人遇到过这个问题,以及必须做些什么。 我将尝试使用JSON文件,但在修复bug之前,注册表是唯一的方法。

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

3 个答案:

答案 0 :(得分:2)

[<强>二零一三年十一月十一日]
[这个问题的答案即将过时,所以这是一个更新的答案。]


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

  

从Windows稳定版和测试版频道的2014年1月开始,我们需要在Chrome网上应用店中托管所有扩展程序

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

  

如果您的扩展程序目前在Chrome网上应用店外托管,则应尽快迁移它们。对您的用户没有任何影响,他们仍然可以使用您的扩展程序,就像没有任何更改一样。如果您愿意,可以将扩展名隐藏在Web Store列表中。如果您有自己网站的专用安装流程,则可以使用现有的内联安装功能。


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

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

  4. 内联安装如何运作

      

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

    <link rel="chrome-webstore-item" href="https://chrome.google.com/webstore/detail/itemID">
    
      

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

    (强调我的)

    inline installs feature 的更多信息。

答案 1 :(得分:0)

有一种更简单的方法...单击复选框后,从background page运行此代码:

chrome.tabs.create({ url:"FILEPATH.crx" } );

您要安装的目标扩展程序(.crx文件)可以在网络上托管,也可以在原始扩展程序文件夹中...您需要tabs manifest权限

答案 2 :(得分:0)

  

“Windows应用程序开发人员应该要求用户在Chrome中安装Chrome扩展程序。允许用户安装与Windows应用程序相关的Chrome扩展程序的一个好方法是将用户链接到您的网站并使用inline installation。”

另见blog post

相关问题