当您加载用户脚本时,它会转换为 Chrome 扩展程序。请按照以下步骤创建和维护具有相同 ID 的扩展:
- 安装用户脚本。
- Visit
chrome://extensions/
并激活开发者模式。
- Scroll down to your user script, and find the ID:
Notice that the version of your userscript is 1.0 (by default, overriden via @version
).
- 接下来,访问您的 Chrome/Chromium 用户配置文件的扩展程序目录。可以找到默认路径here http://www.chromium.org/user-experience/user-data-directory。如果您使用以下命令启动 Chrome/chromium
--user-data-dir=...
标记,然后访问...
.
进入该目录后,查找 ID 为 3 的目录。
- 将整个目录复制到不同的位置,例如
/tmp/
or %tmp%
.
- 使用“加载解压的扩展”按钮,然后选择第一个子目录先前复制的目录的名称:该子目录的名称基于版本。
- Scroll down to see that a converted userscript is a true extension (it loads!):
好的,步骤 6-7 是可选的,它们只是为了显示用户脚本被转换为真正的扩展,并设置了特殊的标志。您还可以注意到有关的红色警告清单版本 https://developer.chrome.com/extensions/manifestVersion。要解决这个问题,请编辑manifest.json
,并添加"manifest_version": 2,
。所以,在我们的例子中:
...
"converted_from_user_script": true,
"description": "Description of user script",
"key": "eYxnPzfSPtfL3ji4nQX3ujTXpzz3YQ6dVlvHWf1gvW8=",
"name": "Userscript",
"version": "1.0",
"manifest_version": 2
}
现在,您已经有了一个 Chrome 扩展程序,其行为类似于带有以下内容的 Chrome 扩展程序:一些额外的味道 http://wiki.greasespot.net/Cross-browser_userscripting#Google_Chrome。按照官方文档中的步骤更新您的软件包:
更新包 https://developer.chrome.com/extensions/packaging#update
要创建扩展的更新版本:
- 增加版本号
manifest.json
.
- 通过访问以下 URL 打开扩展管理页面:chrome://扩展
- 点击包扩展按钮。出现一个对话框。
- In the 扩展根目录字段,指定扩展文件夹的路径 - 例如,
c:\myext
.
- In the 私钥文件字段,指定已经生成的位置
.pem
此扩展名的文件 - 例如,c:\myext.pem
.
- Click OK.
将之前打包的扩展程序上传到 Chrome 网上应用店 https://developer.chrome.com/extensions/packaging#upload
您可以使用 Chrome 开发者仪表板上传扩展程序
你之前已经把自己包装好了。不过,除非你采取特殊措施
步骤,Chrome Web Store 中的扩展程序 ID 将会不同
来自您创建的包中的 ID。这个不同的 ID 可能是
如果您已经分发了扩展包,则会出现问题,因为它
允许用户安装您的扩展的多个版本,每个版本都带有
它自己的本地数据。
如果您想保持扩展 ID 相同,请按照下列步骤操作:
- 重命名创建时生成的私钥
.crx
文件至key.pem
.
- Put
key.pem
在您的扩展的顶级目录中。
- 将该目录压缩为 ZIP 文件。
- 使用以下命令上传 ZIP 文件Chrome 开发者仪表板 https://chrome.google.com/webstore/developer/dashboard.
附录:在未打包/打包的扩展中保留相同的 ID。
分机的extensionID可以通过以下方式控制"key"清单文件中的参数 https://developer.chrome.com/extensions/manifest/key。文档中还说明了使解压和打包扩展具有相同 ID 的最简单方法:
key 该值可用于控制开发期间加载的扩展、应用程序或主题的唯一 ID。
注意:您通常不需要使用该值。相反,写下你的
代码,以便通过使用键值并不重要相对路径 http://developer.chrome.com/extensions/overview.html#relative-urls和chrome.extension.getURL() http://developer.chrome.com/extensions/extension.html#method-getURL.
要获取合适的键值,请首先从 .crx 安装您的扩展
文件(您可能需要上传您的扩展程序 https://chrome.google.com/webstore/developer/dashboard or 手动打包 http://developer.chrome.com/extensions/packaging.html)。
然后,在你的用户数据目录 http://www.chromium.org/user-experience/user-data-directory,查看文件Default/Extensions/<extensionId>/<versionString>/manifest.json
。你
将看到那里填写的键值。
当。。。的时候key
字段不存在,它是随机生成的。然后,根据该密钥生成extensionID。生成extensionID的算法是在这里解释 https://stackoverflow.com/questions/1882981/google-chrome-alphanumeric-hashes-to-identify-extensions。根据算法的本质,您不能以相反的顺序执行它(extensionID ->key
).