嗯,这提示来的突然,之前火狐126.0版本后的新版由于不明原因,我的脚本很多都失效了,所以本地锁死了版本。结果,一个周末之后,再启动浏览器,所有插件全部被禁用,提示:未通过针对是否适用于 Firefox 的验证,现已被禁用(could not be verified for use in Firefox and has been disabled)。
当时内心大骂什么XX玩意儿。
考虑到这种问题必然不会是我一个人碰到的,而周一又因为娃发烧,请假在家带娃,就没管。周二上班了,谷歌找找解决方案,果然被坑的人多了去了,再reddit找到个方案实测可行,整理如下:
以下完整转载的步骤:
如果您的 FF 不是 ESR、Developer 或 Nightly,则“xpinstall.signatures.required”设置将被忽略,它们会在发布版本中禁用它。对于发布版本,您必须编辑 omni.ja 文件才能使该设置起作用。这有点复杂。
找到并编辑 omni.ja 文件。通过解压/重新打包或十六进制编辑。
在我看来,十六进制编辑更容易。打开文件并搜索 MOZ_REQUIRE_SIGNING,找到紧跟其后的“true”,在不影响文件大小的情况下将其更改为“false”(在 true 的 t 之前一个字母开始输入 false)。保存文件。
2. 启动 FF 并在 about:config 中将“xpinstall.signatures.required”设置为 FALSE,然后关闭它。
3. 暂时将“-purgecaches”参数添加到您的 FF 快捷方式,例如“Firefox.exe -private-window -purgecaches”。
4. 启动 FF。
现在应该启用所有扩展。
如果没有,请暂时启用开发控制台(about:config devtools.chrome.enabled -> True)重新启动 FF(如果需要),然后按 CTRL+SHIFT+J 并将下面的脚本复制并粘贴到窗口中,然后按 ENTER。
async function set_addons_as_signed() {
Components.utils.import("resource://gre/modules/addons/XPIDatabase.jsm");
Components.utils.import("resource://gre/modules/AddonManager.jsm");
let addons = await XPIDatabase.getAddonList(a => true);
for (let addon of addons) {
// The add-on might have vanished, we'll catch that on the next startup
if (addon._sourceBundle && !addon._sourceBundle.exists())
continue;
if( addon.signedState != AddonManager.SIGNEDSTATE_UNKNOWN )
continue;
addon.signedState = AddonManager.SIGNEDSTATE_NOT_REQUIRED;
AddonManagerPrivate.callAddonListeners("onPropertyChanged",
addon.wrapper,
["signedState"]);
await XPIDatabase.updateAddonDisabledState(addon);
}
XPIDatabase.saveChanges();
}
set_addons_as_signed();不要忘记禁用开发控制台并从快捷方式中删除“-purgecaches”参数。
后续
经过测试,发现这方法只有24小时有效,后面还是会复发,测试了下新版,看起来之前的问题已经不存在,使用起来一切正常,最终还是升级到了最新版。
参考资料
How do i re-enable extensions that are not verified for use in firefox.
如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。
如本文对您有用,捐赠和留言 将是对我最好的支持~(捐赠可转为站内积分)
如愿意,请向朋友推荐本站,谢谢。
尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。
留言