将 Firefox 附加组件上传到 AMO 时缺少 manifest.json
Missing manifest.json when uploading Firefox Add-on to AMO
我无法使用 form provided by mozilla 上传我的 firefox 扩展。我不断收到错误 Your add-on failed validation with 2 errors.
No install.rdf or manifest.json foundAdd-on missing manifest
,这是非常具有误导性的,因为我的应用程序 有 一个 manifest.json.
manifest.json 看起来像这样:
{
"manifest_version": 2,
"version": 1.0,
"name": "my-extension-name",
"description": "Lorem ipsum dolor sit amet",
"background": {
"scripts": ["js/background.js"]
},
"main": "popup.js",
"browser_action": {
"default_icon": "img/icon_grey.png",
"default_popup": "popup.html",
"default_title": "loremipsum"
},
"engines": {
"firefox": ">=38.0a1"
},
"permissions": [
"activeTab",
"tabs",
"background",
"http://*/*",
"https://*/*",
"notifications",
"alarms",
"storage",
"webRequest",
"webRequestBlocking",
"clipboardRead"
]
}
这个方法缺少什么?
当您打开插件包 zip 文件时,您应该可以看到 manifest.json 文件以便将其上传到 AMO。
在您的情况下,当您打开压缩包时,似乎有一个文件夹,manifest.json 位于该文件夹内。
因为我找到了解决我的问题的方法并想分享它以供将来参考,所以我回答我自己的问题:
手头的问题是我没有使用 web-ext
命令行工具来创建 .zip / .xpi 包。我能够通过安装 web-ext
并使用 web-ext build
构建扩展来解决问题。此操作的结果是一个 .xpi 文件,其中包含我随后能够上传到 AMO 服务的项目。请注意,新创建的包中的 manifest.json
与我最初提供的 manifest.json
相同。但是,除了 manifest.json
之外,还创建了一个目录 META-INF
,其中包含 mozilla.mf
、mozilla.rsa
和 mozilla.sf
文件。
然而,这并没有完全解决我的问题。把扩展上传到AMO后,安装不了,说是损坏了。显然,这是我在 interwebz 的某个地方读到的(忘记了来源),Mozilla 打开了上传的 .zip / .xpi 包来测试它,由于我的包没有签名,Mozilla 无法确保它的完整性并标记它不安全(即损坏)。
为了解决第二个问题,我不得不签署延期。这可以使用以下命令完成:
web-ext sign --api-secret YOUR_API_SECTER --api-key YOUR_API_KEY
在此之后,我能够上传并安装扩展。
我 运行 遇到了同样的问题,但所有这些说明都没有解决它。
我一直做的是打包整个文件夹,因此 manifest.json 在解压时不在第一层。
我的解决方案
Select 所有文件,而不是文件夹,然后将它们打包为一个 .zip 文件,它应该可以工作。至少它对我有用。
这里是link到MDN Documentation。
遇到同样的问题,问题是文件名区分大小写:
Manifest.jason -> 错误,未找到清单
manifest.json -> 成功
对此的非常简单的回答是无法在您的 zip 文件中找到清单。这是因为当您获取文件并使用 windows 中的默认压缩器将其压缩时,它会获取文件并将其放入您创建的 zip 文件的子文件夹中...
压缩前
folderYouWantCompressed
-FileInFolder.html
-Manifest.json
压缩后是这样
nameOfZip.zip
-folderYouWantCompressed
-FileInFolder.html
-Manifest.json
但你想要的是
nameOfZip.zip
-FileInFolder.html
-Manifest.json
Oliver Sauter 回答有效的原因是因为当你 select "folderYouWantCompressed" 中的所有文件时,它压缩时没有子文件夹,这意味着你不会 运行 进入这个问题并且它有找到清单文件没问题。
据我所知,"correct answer" 似乎正在对附加组件本身进行签名,并且能够正确获取清单文件,因此它确实有效,但似乎只是第 3 方的方式(我没看得太深)
注意:我最初是通过查看 Oliver Sauter 解决了我的问题 post 我只是想让未来的人看清楚这个 post。
我无法使用 form provided by mozilla 上传我的 firefox 扩展。我不断收到错误 Your add-on failed validation with 2 errors.
No install.rdf or manifest.json foundAdd-on missing manifest
,这是非常具有误导性的,因为我的应用程序 有 一个 manifest.json.
manifest.json 看起来像这样:
{
"manifest_version": 2,
"version": 1.0,
"name": "my-extension-name",
"description": "Lorem ipsum dolor sit amet",
"background": {
"scripts": ["js/background.js"]
},
"main": "popup.js",
"browser_action": {
"default_icon": "img/icon_grey.png",
"default_popup": "popup.html",
"default_title": "loremipsum"
},
"engines": {
"firefox": ">=38.0a1"
},
"permissions": [
"activeTab",
"tabs",
"background",
"http://*/*",
"https://*/*",
"notifications",
"alarms",
"storage",
"webRequest",
"webRequestBlocking",
"clipboardRead"
]
}
这个方法缺少什么?
当您打开插件包 zip 文件时,您应该可以看到 manifest.json 文件以便将其上传到 AMO。
在您的情况下,当您打开压缩包时,似乎有一个文件夹,manifest.json 位于该文件夹内。
因为我找到了解决我的问题的方法并想分享它以供将来参考,所以我回答我自己的问题:
手头的问题是我没有使用 web-ext
命令行工具来创建 .zip / .xpi 包。我能够通过安装 web-ext
并使用 web-ext build
构建扩展来解决问题。此操作的结果是一个 .xpi 文件,其中包含我随后能够上传到 AMO 服务的项目。请注意,新创建的包中的 manifest.json
与我最初提供的 manifest.json
相同。但是,除了 manifest.json
之外,还创建了一个目录 META-INF
,其中包含 mozilla.mf
、mozilla.rsa
和 mozilla.sf
文件。
然而,这并没有完全解决我的问题。把扩展上传到AMO后,安装不了,说是损坏了。显然,这是我在 interwebz 的某个地方读到的(忘记了来源),Mozilla 打开了上传的 .zip / .xpi 包来测试它,由于我的包没有签名,Mozilla 无法确保它的完整性并标记它不安全(即损坏)。
为了解决第二个问题,我不得不签署延期。这可以使用以下命令完成:
web-ext sign --api-secret YOUR_API_SECTER --api-key YOUR_API_KEY
在此之后,我能够上传并安装扩展。
我 运行 遇到了同样的问题,但所有这些说明都没有解决它。 我一直做的是打包整个文件夹,因此 manifest.json 在解压时不在第一层。
我的解决方案
Select 所有文件,而不是文件夹,然后将它们打包为一个 .zip 文件,它应该可以工作。至少它对我有用。
这里是link到MDN Documentation。
遇到同样的问题,问题是文件名区分大小写:
Manifest.jason -> 错误,未找到清单 manifest.json -> 成功
对此的非常简单的回答是无法在您的 zip 文件中找到清单。这是因为当您获取文件并使用 windows 中的默认压缩器将其压缩时,它会获取文件并将其放入您创建的 zip 文件的子文件夹中...
压缩前
folderYouWantCompressed
-FileInFolder.html
-Manifest.json
压缩后是这样
nameOfZip.zip
-folderYouWantCompressed
-FileInFolder.html
-Manifest.json
但你想要的是
nameOfZip.zip
-FileInFolder.html
-Manifest.json
Oliver Sauter 回答有效的原因是因为当你 select "folderYouWantCompressed" 中的所有文件时,它压缩时没有子文件夹,这意味着你不会 运行 进入这个问题并且它有找到清单文件没问题。
据我所知,"correct answer" 似乎正在对附加组件本身进行签名,并且能够正确获取清单文件,因此它确实有效,但似乎只是第 3 方的方式(我没看得太深)
注意:我最初是通过查看 Oliver Sauter 解决了我的问题 post 我只是想让未来的人看清楚这个 post。