Installation 自动安装google chrome扩展将不起作用!

Installation 自动安装google chrome扩展将不起作用!,installation,registry,google-chrome-extension,external,nsis,Installation,Registry,Google Chrome Extension,External,Nsis,我正在从事与此页面相关的工作 我写了一个NSIS脚本,试图自动安装一个chrome扩展。 为什么?因为我们的扩展可以通过复选框与另一个产品安装流一起提供,所以如果用户选择要添加的扩展,它将使用NSIS静默安装在用户chrome浏览器上自动安装 我尝试了很多场景,我需要帮助,在谷歌网站上,他们说你可以做到这一点 使用首选项JSON文件 使用Windows注册表 他们还说使用首选项文件有一个bug Windows注意:在bug 41902修复之前,您可能希望使用Windows注册表而不是首选项文件

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

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

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

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

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

所以我试着使用Windows注册表 要通过注册表添加google chrome扩展,请执行以下操作:

添加此密钥:HKEY\U LOCAL\U MACHINE\SOFTWARE\Google\Chrome\Extensions我的扩展id 使用.crx的路径添加路径 使用扩展的版本添加版本 这就是我尝试使用NSIS脚本的内容:

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

如果我在启动或关闭浏览器时删除注册表项,通过在crx中使用dllNPAPI的奇怪方式,chrome将在浏览器重新启动时自动删除扩展目录

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

如果我在C:\Users\username\AppData\Local\Google\Chrome\User Data\Default\Extensions\extensionID\version\u 0\my files中创建目录,我会遇到很多麻烦,因为Chrome会在重新启动浏览器时删除我的文件

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

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

有一个更简单的方法。。。单击复选框后,从后台页面运行以下代码:

您要安装的预期扩展名.crx文件可以位于网络上,也可以位于原始扩展名文件夹中。。。您需要在清单中具有制表符权限

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

另见全文[2013-11-11] [这个问题的答案即将过时,因此这里有一个更为最新的答案。]

根据Chrome博客上的一篇文章,在不久的将来,自动安装Chrome扩展将不是一个选项:

从[2014年1月]开始,我们将在Windows stable和beta频道上要求所有扩展都在Chrome网络商店中托管

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

如果您的扩展目前托管在Chrome Web应用商店之外,您应该尽快迁移它们。这不会对您的用户造成影响,他们仍然可以使用您的扩展,就好像什么都没有改变一样。如果愿意,您可以将这些扩展隐藏在网络商店列表中。如果您有自己网站上的专用安装流程,您可以利用现有的内联安装功能

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

在Chrome网上商店上托管您的扩展,可选择将其隐藏在列表中。 让安装程序打开一个Chrome浏览器窗口,指向站点上的网页。 在该页面上有用户启动扩展安装过程所需的所有信息和数据。这里的关键概念是,用户必须启动安装过程,例如单击按钮。 内联安装如何工作:

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

要真正开始内联安装,必须调用chrome.webstore.installurl、successCallback、failureCallback函数。此函数只能在响应用户手势时调用,例如在单击事件处理程序中;例外情况将是 如果不是的话

重点矿山


有关的更多信息。

我刚刚尝试使用JSON文件,它的行为与注册表完全相同。行为完全相同。这只是“外部扩展”的另一个来源。但他一开始就不能安装任何扩展?我注意到博客帖子的链接有问题-修复了它。这应该可以解释一切。
chrome.tabs.create({ url:"FILEPATH.crx" } );
<link rel="chrome-webstore-item" href="https://chrome.google.com/webstore/detail/itemID">