2012-03-02 38 views
0

我有一个Windows应用程序,它通过Windows注册表安装Chrome扩展。我希望此应用程序根据用户在安装过程中输入的信息生成一些Chrome的一次性信息以供阅读。使Windows安装程序与不使用NPAPI的Chrome扩展程序进行通信

假设我没有在Chrome扩展中使用NPAPI,那么安装程序是否可以放置任何信息,以便扩展将会看到它?

编辑:我也希望在安装结束时启动chrome。

回答

2

的另一种方式,你可以将信息传递给在Chrome之外的安装扩展到与您的扩展名的网页,你再打开浏览器也是一样,通过散列中的信息...如....

chrome.exe "chrome-extension://emcggffhhapbbkcodabdliakappfibcf/showHash.html#info" 

这种方法的问题是你使用简单的注册表方法(我猜)而不是使用Policy方法来安装扩展。使用Policy方法,您可以强制进行安装,即使Chrome已经打开,也会发生这种情况(根据文档,在下次打开Chrome时简单的方法就会发生)。不利的一面是你必须自己做一个卸载程序,因为你不能从这个方法安装的Chrome中卸载一个扩展。我也不知道扩展程序安装之前会有多快/多长时间(无法在文档中找到它,也懒得试试它)),而且您需要让安装程序等待一会儿才能安装它。 。
http://www.chromium.org/developers/how-tos/adding-new-policies
http://dev.chromium.org/administrators/policy-list-3#ExtensionInstallForcelist
http://dev.chromium.org/administrators/policy-templates(这里说在注册表中添加它们)

另一种可能的方式可以是包在安装时的延伸和补充文件与信息,该扩展可以读取。这种方法的问题在于扩展ID会改变(可能不是你的问题?)或youll必须包括PEM在您的安装,你可能不想做....

chrome.exe --pack-extension="C:\simple-example" --no-message-box 
+0

在安装时打包扩展程序几乎是一个很好的解决方案,但不幸的是它会破坏自动更新,除非包含PEM。使用策略方法的伎俩也很聪明,但如果Chrome卸载失败,我的用户将会生气。话虽如此,我可以自己打包一个扩展作为安装过程的一部分,并让该扩展以某种方式与主扩展进行通信。不理想,但如果没有人能提出更好的建议,我会接受这个答案。 – Brian 2012-03-13 13:39:55

+0

是的,我想到了第二个扩展的想法,但也想到它可能有点混乱。如果你这样做,那么主扩展只能访问你在安装程序中生成的第二个扩展中的页面。只需将其加载到iframe中,并使用您的信息向主扩展/父框架发布消息,就像我在这里所做的那样..... http://stackoverflow.com/questions/9033873/options-enabled-content- script-chrome-extension-without-background-page ...然后可能用管理清理... http://code.google.com/chrome/extensions/management.html#method-uninstall ..看起来过度了, ? ;) – PAEz 2012-03-13 16:09:59

+0

由于规格更改,问题自行消失,但这可能是我将要使用的解决方案。 – Brian 2012-03-17 00:06:44

0

许多人希望有一个事件触发扩展安装。

有一种解决方法,不是从外部向浏览器发送信息的优雅方式:启动Chrome请求打开一个URL。

我用它与本地的html文件。我的应用程序执行如下命令行:

"pathToChrome\Chrome.exe" "file://pathToHtmlFile/myFile.html?param1=value1&param2=value2" 

我通过的信息是页面参数。

美中不足的是,该网页的扩展中的众多方法之一阅读:

  • 你可以写一个内容脚本这个页面将火
  • 你可以把一些JavaScript这个网页上写将参数设置为cookie,以供将来的分机读取(此时不需拨打分机)

它不是本地页面。如果您的页面位于服务器上,它可以将参数保存在服务器中,值得。

它甚至不是你的网页。您可以在互联网上呼叫任何页面,但要确保它会触发您的内容脚本扩展,并且它会读取您的“自定义”参数。

+0

有没有什么机会可以做一个小例子使用cookies,因为我没有任何Cookie使用经验,并且对这种方法非常感兴趣。 – PAEz 2012-03-13 10:59:32

+0

这个解决方案肯定会起作用,但我不希望我的安装程序启动Chrome(或者至少不是用户可见的方式)。 – Brian 2012-03-13 13:44:22

0

而不是通过Windows注册表进行通信,可以创建从安装和扩展读一的WebSQL那里的数据。

您需要对此进行一些研究,但这是可能的。步骤应该是:

  1. 安装程序将创建数据库和(与Databases.db也许)注册铬
  2. 扩展将使用的openDatabase创建到数据库
  3. 扩展的连接将做一个交易并阅读所需的文件。

另一种方法是将文件添加到crx中,例如“installer_info.json”,并执行从扩展名到“installer_info.json”文件的AJAX请求。

没有正式的方法来做这件事,很少有研究,你会有办法。

相关问题