【发布时间】:2012-03-02 15:13:37
【问题描述】:
我有一个 Windows 应用程序,它通过 Windows 注册表安装 Chrome 扩展程序。我希望这个应用程序能够根据用户在安装过程中输入的信息生成一些一次性信息供 Chrome 读取。
假设我没有在 Chrome 扩展程序中使用 NPAPI,安装程序是否可以在任何地方放置信息以便扩展程序看到它?
编辑:我还希望在安装结束时启动 chrome。
【问题讨论】:
我有一个 Windows 应用程序,它通过 Windows 注册表安装 Chrome 扩展程序。我希望这个应用程序能够根据用户在安装过程中输入的信息生成一些一次性信息供 Chrome 读取。
假设我没有在 Chrome 扩展程序中使用 NPAPI,安装程序是否可以在任何地方放置信息以便扩展程序看到它?
编辑:我还希望在安装结束时启动 chrome。
【问题讨论】:
另一种从 Chrome 外部将信息传递给已安装扩展程序的方法是创建一个包含扩展程序的页面,然后您也可以打开 Chrome 并在哈希中传递信息......例如......
chrome.exe "chrome-extension://emcggffhhapbbkcodabdliakappfibcf/showHash.html#info"
这种方法的问题是您使用简单的注册表方法(我猜)而不是使用策略方法安装扩展。使用 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 会改变(对你来说可能不是问题?)或者你必须在你的安装程序中包含你可能不想做的 PEM....
chrome.exe --pack-extension="C:\simple-example" --no-message-box
【讨论】:
许多人希望在安装扩展程序时触发事件。
有一种解决方法,而不是优雅的方式从外部向浏览器发送信息:启动 chrome 要求打开一个 url。
我将它与本地 html 文件一起使用。我的应用程序执行如下命令行:
"pathToChrome\Chrome.exe" "file://pathToHtmlFile/myFile.html?param1=value1¶m2=value2"
我传递的信息是页面的参数。
问题在于,扩展程序以多种方式之一读取此页面:
它不必是本地页面。如果你的页面在服务器上,它可以将参数保存在服务器中,值得。
它甚至不是你的页面。您可以调用 Internet 上的任何页面,但要确保它会触发您的内容脚本扩展,并且会读取您的“自定义”参数。
【讨论】:
您可以从安装程序创建 WebSQL 并从扩展程序中读取数据,而不是通过 Windows 注册表进行通信。
您需要对如何做到这一点进行一些研究,但这是可能的。步骤应该是:
另一种选择是将文件添加到 crx,例如“installer_info.json”,然后从扩展名向“installer_info.json”文件发出 AJAX 请求。
没有正式的方法来做这件事,只要稍微研究一下,你就会有方法。
【讨论】: