Приветствую!

Не устанавливает дополнение - "не может быть установлено так как оно несовместимо firefox 58"

Как обойти защиту в версии 58 и разрешить установку дополнений?
config.js и config-prefs.js поместил в нужные папки.

Спасибо!

firepox, воспользуйся версией 58 Developer Edition - там разрешены и установка, и использование старых дополнений. По факту далеко не все, конечно, работают, но это уже другой разговор.

firepox пишет

config.js и config-prefs.js поместил в нужные папки.

Нафига? Это отключает проверку цифровой подписи, а тут речь о глобальной блокировке дополнений не на WebExtension. Плюс "шаманство" с config.js и config-prefs.js перестало работать, если не ошибаюсь, ещё с 55-ой версии.

Stanislav1989
Решение то существует?)

firepox пишет

Решение то существует?)

Да, в первом предложении написал.

Stanislav1989 пишет

58 Developer Edition

По сути,  эта та же бета, но не заблокирована работа старых дополнений.

Stanislav1989
установил, не устанавливает(
Спасибо за помощь!

остаюсь на на 56)

Stanislav1989 пишет

Плюс "шаманство" с config.js и config-prefs.js перестало работать, если не ошибаюсь, ещё с 55-ой версии.

Оно и на 58 работает. Вот только оно разное.
firepox, можете выложить config.js — сравню со своим? Может отличия есть?

скрытый текст

Выделить код

Код:

//
try {(code => {
    var {classes: Cc, interfaces: Ci, utils: Cu} = Components;
    var jsval, evl = true, re = e => Cu.reportError(e), imp = name => {try {
        return Cu.import(`resource://gre/modules/addons/${name}.jsm`, {});
    } catch(ex) {}}
    if ((jsval = imp("AddonSettings"))) {
        jsval.AddonSettings = {ADDON_SIGNING: false, REQUIRE_SIGNING: false, ALLOW_LEGACY_EXTENSIONS: true};
        try {evl = jsval.eval("this") === jsval;} catch(ex) {evl = false;}
    }
    lockPref("extensions.allow-non-mpc-extensions", true);
    var jsvals = ["XPIProvider", "XPIInstall"].map(imp).filter(i => i);

    if (evl) return jsvals.forEach(jsval => {try {jsval.eval(code);} catch(ex) {re(ex);}});

    var sl = Cc["@mozilla.org/moz/jssubscript-loader;1"].getService(Ci.mozIJSSubScriptLoader);
    Cu.importGlobalProperties(["URL", "Blob"]); var url = URL.createObjectURL(new Blob([(code)]));
    jsvals.forEach(jsval => {try {sl.loadSubScript(url, jsval);} catch(ex) {re(ex);}});

})(String.raw`
    try {SIGNED_TYPES.clear();} catch(ex) {};
    "verifyZipSignedState" in this && (signedState => {
        var re = /\x06\x03U\x04\x03\x14[\s\S](\{[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\}|[a-z0-9-\._]*\@[a-z0-9-\._]+)0\x82\x02"0\r\x06\t/i;
        var getUUID = () => {
            var gen = Cc["@mozilla.org/uuid-generator;1"].getService(Ci.nsIUUIDGenerator);
            return (getUUID = () => gen.generateUUID().toString())();
        }
        var getURI = file => {
            var jsval = Cu.import("resource://gre/modules/addons/XPIProvider.jsm", {});
            return (getURI = file => jsval.getURIForResourceInFile(file, "META-INF/mozilla.rsa"))(file);
        }
        var getId = file => {
            var result, is = {close() {}}, sis = {close() {}};
            try {
                is = Services.io.newChannelFromURIWithLoadInfo(getURI(file), null).open();
                sis = Cc["@mozilla.org/scriptableinputstream;1"].createInstance(Ci.nsIScriptableInputStream);
                sis.init(is); var str = sis.readBytes(sis.available());
                var match = str.match(re); if (match) result = match[1];
            } catch(ex) {}
            sis.close(); is.close();
            return result || getUUID();
        }
        verifyZipSignedState = function verifyZipSignedState(aFile, aAddon) {
            if (aAddon.id || aAddon._installLocation.name == KEY_APP_TEMPORARY)
                return Promise.resolve({signedState, cert: null});
            var root = !AppConstants.MOZ_REQUIRE_SIGNING && Services.prefs.getBoolPref(PREF_XPI_SIGNATURES_DEV_ROOT, false)
                ? Ci.nsIX509CertDB.AddonsStageRoot : Ci.nsIX509CertDB.AddonsPublicRoot;
            return new Promise(resolve => {
                var callback = {openSignedAppFileFinished(rv, zipReader, cert) {
                    zipReader && zipReader.close();
                    resolve({signedState, cert: cert || {commonName: getId(aFile)}});
                }};
                gCertDB.openSignedAppFileAsync(root, aFile, callback.wrappedJSObject = callback);
            });
        }
    })(AddonManager.SIGNEDSTATE_NOT_REQUIRED);
`)} catch(err) {Components.utils.reportError(err);}

04-12-2017 22:31:52
в девелоперской версии - "не может быть установлено так как оно несовместимо firefox 58"

firepox, у меня точно такое же, но пока не встречал тех, которые не устанавливаются. Думал может другое...

Тогда если только так:

при наличии этих двух файлов присутствует и отрицательный эффект - невозможно установить/обновить некоторые расширения и Firefox выдает ошибку "это дополнение не может быть установлено так как оно по-видимому повреждено". При возникновении этой ошибки закройте Firefox, удалите эти два файла (предварительно сделайте резервную копию файлов!) и запустите Firefox. Установите нужное вам дополнение, закройте Firefox и верните эти файлы обратно в папки.

Хотя вроде про другую ошибку...

Там ещё про настройки говорилось, не знаю уж, влияют они или нет...
extensions.allow-non-mpc-extensions = true
extensions.legacy.enabled = true
xpinstall.signatures.required = false (для 58).