我正在从事与此页面相关的工作
我写了一个NSIS脚本,试图自动安装chrome扩展。 (为什么?因为我们的扩展可以通过复选框提供另一个产品安装流程,然后如果用户选择我们要添加的扩展,它将使用NSIS静默安装在用户chrome浏览器上自动安装)
我尝试了很多场景,我需要帮助,在谷歌网站上,他们说你可以做到这一点
他们还说“使用首选项文件”有一个错误(Windows注意:在修复错误41902之前,您可能希望使用Windows注册表而不是首选项文件。)
提醒: 自动安装的扩展名称为外部扩展名
通过注册表添加Google Chrome扩展程序:
这是我尝试过的(使用NSIS脚本):
如果我添加注册表项 它将安装扩展,但如果用户手动卸载,chrome会打开黑名单标记,并且无法使用任何其他脚本重新安装扩展。剩下的唯一方法是用户手动安装。最糟糕的是,如果用户手动安装并手动卸载(它将关闭黑名单标志),并且当重新启动chrome时,它将自动重新安装扩展(无需任何用户操作),因为注册表项仍然存在。
如果我在启动或关闭浏览器时删除注册表项,通过一种怪异的方式(在crx中使用dll(NPAPI)),Chrome将在浏览器重新启动时自动删除扩展目录。
如果我在用户卸载扩展程序时设法删除注册表项。我们被列入黑名单,因此在用户通过手动安装和卸载扩展程序关闭黑名单标志之前,自动安装程序将不再起作用。
如果我在 “C:\ Users \(用户名)\ AppData \ Local \ Google \ Chrome \ User Data \ Default \ Extensions \(extensionID)\(版本)中创建目录_0 \(我的文件在这里)“ ,我遇到了很多麻烦,因为chrome会在重新启动浏览器后立即删除我的文件。
是否有人遇到过这个问题,以及必须做些什么。 我将尝试使用JSON文件,但在修复bug之前,注册表是唯一的方法。
感谢有时间阅读所有这些的人! 任何帮助将不胜感激,谢谢!
答案 0 :(得分:2)
[<强>二零一三年十一月十一日强>]
[这个问题的答案即将过时,所以这是一个更新的答案。]
根据Chromium博客上的 recent post ,自动安装Chrome扩展程序在不久的将来不会成为一种选择:
从Windows稳定版和测试版频道的2014年1月开始,我们需要在Chrome网上应用店中托管所有扩展程序。
作为替代方案,开发人员和供应商将能够使用内联安装功能:
如果您的扩展程序目前在Chrome网上应用店外托管,则应尽快迁移它们。对您的用户没有任何影响,他们仍然可以使用您的扩展程序,就像没有任何更改一样。如果您愿意,可以将扩展名隐藏在Web Store列表中。如果您有自己网站的专用安装流程,则可以使用现有的内联安装功能。
所以,基本上,你需要做的是:
内联安装如何运作
您希望在其中进行内联安装的网站上的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。”