从Chrome Webstore安装的扩展程序会引发错误"程序包无效.详细信息:'无法加载包含文件或目录名称的扩展名_metadata ...'

Don*_*mmy 17 google-chrome google-chrome-extension google-chrome-app

将CRX添加到Chrome网上应用店后,Google会_metadata向crx 添加目录.较旧版本的Chrome不了解此目录(在Chrome 27上测试过)并抛出此错误:

Package is invalid. Details: 'Cannot load extension with file or directory name
_metadata. Filenames starting with "_" are reserved for use by the system.'.
Run Code Online (Sandbox Code Playgroud)

如果您尝试在较旧版本的Chrome上安装此扩展程序,则会看到此错误:https://chrome.google.com/webstore/detail/allcast-receiver/hjbljnpdahefgnopeohlaeohgkiidnoe

一个很好的解释:https://groups.google.com/a/chromium.org/d/msg/chromium-apps/huDqSeaQx3Q/Z5GOMxA7lQIJ

这有解决方法吗?这使得无法支持旧版Chrome.

小智 13

您可以尝试解压缩CRX(如果需要,将后缀名称更改为".zip")然后在chrome:Settings - > Extensions中选中"Developer mode",选择"load unpacked extension .."并选择解压缩的文件夹.

PS我必须重命名以"_"(下划线)开头的文件夹,并"default_locale":"en", 从清单JSON中删除该行 以使其工作


Rob*_*b W 12

您 - 作为扩展程序开发人员 - 无法解决此错误,因为该目录由Chrome Web Store(CWS)添加.您可以通过不使用CWS分发扩展程序来解决此问题,但是大多数Chrome用户都无法使用该扩展程序,因为Google已经积极尝试阻止用户从CWS外部获取扩展程序.

CWS团队是唯一可以解决这个问题的团队._metadata如果用户代理不支持该目录,则它们应该在没有目录的情况下提供crx文件(Chrome 30-).您可以在https://code.google.com/p/chromium/issues/detail?id=377278上跟踪此错误.到目前为止,回应是:

我们无法修复旧版Chrome.Webstore端跟踪b/15176392,但不太可能将支持扩展回Chrome 30.

明确问题以获得更新通知,并表明您确实希望修复错误.如果有足够的用户/开发者抱怨,那么谷歌可能会修复该错误.


Xan*_*Xan 5

此答案适用于您执行以下操作的 CRX 文件:

  • 从 Chrome 网上应用店下载
  • 正在尝试加载已解压的内容

_locales文件夹不应造成问题。只要清单包含default_locale密钥,Chrome 就会按预期加载解压的扩展程序。

_metadata是有问题的文件夹。它包含所有扩展文件的加密哈希值,以防止这些文件被篡改,并由 CWS 自动添加。这在解压扩展的上下文中没有意义,并且没有其他用途,因此只需删除该文件夹即可