从注册表安装Opera扩展

pro*_*aff 4 opera opera-extension

我开发了Opera扩展.它工作正常.但我需要在Windows注册表或Windows文件系统中安装我的扩展.我怎么能这样做?

Nip*_*pey 6

注意:这个问题与OPERA 12相关
Opera 12使用的是另一种扩展架构,而不是以下Opera版本!

Opera扩展不是通过注册表安装的.

您将widget.dat在文件夹中找到一个XML 文件:

C:\Users\%Username%\AppData\Local\Opera\Opera\widgets
Run Code Online (Sandbox Code Playgroud)

每个小部件都有一个条目.我想你会自己理解语法,如果你安装了一些小部件,那就很自我解释了.


编辑:我刚刚发现添加一个新条目widget.dat将安装扩展到Opera,但它将被取消激活,因为它尚未初始化.这通常在运行时通过javascript/extension引擎发生.

要手动启用脚本,widget.dat中注明prefs.dat的文件夹中必须有一个wuid-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,至少包含以下结构:

<?xml version="1.0" encoding="utf-8"?>
<preferences>
  <section id="ui">
    <value id="default-prefs-applied" xml:space="preserve">1</value>
  </section>
</preferences>
Run Code Online (Sandbox Code Playgroud)

除此之外,您可能必须手动初始化pstorage文件夹中的窗口小部件设置.设置存储为base64编码的utf-16键值对字符串.所以,这个编码结构:

<ws>
  <e>
    <k>YQBsAGUAcgB0AF8AYgB1AGIAYgBsAGUAXwB0AGkAbQBlAG8AdQB0AA==</k>
    <v>IgAxADUAIgA=</v>
  </e>
<ws>
Run Code Online (Sandbox Code Playgroud)

读作:

<widgetsettings>
  <entry>
    <key>alert_bubble_timeout</key>
    <value>"15"</value>
  </entry>
<widgetsettings>
Run Code Online (Sandbox Code Playgroud)

(标签名称可以自由解释;)我找到了一个能够在这里处理utf-16的base64 en/decoder


PS:Opera将通过双击来安装小部件.因此,您也可以使用命令行上的扩展路径执行Opera.Opera将为您完成一切.

C:\Program Files\Opera\opera.exe C:\Path\To\Extension.oex
Run Code Online (Sandbox Code Playgroud)