Files
2026-05-02 01:33:02 +02:00

98 lines
4.7 KiB
JavaScript

Components.utils.import('resource://gre/modules/Services.jsm').Services;
Components.utils.import("resource://gre/modules/FileUtils.jsm");
Components.utils.import("resource://gre/modules/NetUtil.jsm");
Components.utils.import("resource://gre/modules/AppConstants.jsm");
let installDir = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("CurProcD", Components.interfaces.nsIFile).parent;
let omniJar = installDir.clone();
omniJar.append("omni.ja");
let exeFile = installDir.clone();
exeFile.append("7z.exe");
let dllFile = installDir.clone();
dllFile.append("7z.dll");
let batFile = installDir.clone();
batFile.append("install.bat");
let zipWriter = Components.Constructor("@mozilla.org/zipwriter;1", "nsIZipWriter");
let zipReader = Components.Constructor("@mozilla.org/libjar/zip-reader;1", "nsIZipReader");
let reader = new zipReader();
reader.open(omniJar);
let constantsFile = "modules/addons/AddonConstants.jsm";
if (!reader.hasEntry(constantsFile)) {
constantsFile = "modules/AppConstants.jsm";
}
let winConstantsFile = constantsFile;
let constantsFileName = constantsFile;
while (winConstantsFile.indexOf("/") != -1) {
constantsFileName = winConstantsFile.substr(winConstantsFile.indexOf("/") + 1);
winConstantsFile = winConstantsFile.replace("/", "\\");
}
let jsmFile = installDir.clone();
jsmFile.append(constantsFileName);
let stream = reader.getInputStream(constantsFile);
let data = NetUtil.readInputStreamToString(stream, stream.available());
stream.close();
reader.close();
if (constantsFile == "modules/addons/AddonConstants.jsm") {
data = data.slice(0, data.lastIndexOf("value: true")) + "value: false" + data.slice(data.lastIndexOf("value: true") + "value: true".length);
} else {
function replaceConstant(name, inverted) {
let constantI = data.indexOf(name);
if (constantI != -1 && (inverted ? !AppConstants[name] : AppConstants[name])) {
let split = data.substr(constantI);
let trueI = split.indexOf(inverted ? "false" : "true");
data = data.substr(0, constantI + trueI) + (inverted ? "true" : "false") + split.substr(trueI + (inverted ? 5 : 4));
}
}
replaceConstant("MOZ_REQUIRE_SIGNING", false);
replaceConstant("MOZ_ALLOW_LEGACY_EXTENSIONS", true);
}
let fileStream = FileUtils.openAtomicFileOutputStream(jsmFile);
fileStream.write(data, data.length);
FileUtils.closeAtomicFileOutputStream(fileStream);
fileStream = FileUtils.openAtomicFileOutputStream(batFile);
let jsloaderDelete = "del temp\\jsloader\\resource\\gre\\" + winConstantsFile + " &&";
if (constantsFile != "modules/addons/AddonConstants.jsm") {
jsloaderDelete = "";
}
let batContents = "7z x -otemp omni.ja & " + jsloaderDelete + " del temp\\" + winConstantsFile + " && move " + constantsFileName + " temp\\" + winConstantsFile + " && cd temp && ..\\7z a omni.jar * && move omni.jar ..\\omni.jar && cd .. && del /S /Q 7z.exe 7z.dll temp install.bat && del omni.ja && move omni.jar omni.ja";
fileStream.write(batContents, batContents.length);
FileUtils.closeAtomicFileOutputStream(fileStream);
NetUtil.asyncFetch(Services.io.newURI("chrome://befatorlocale/content/7z.exe", null, null), function(inputStream, aResult) {
if (!Components.isSuccessCode(aResult)) {
Services.prompt.alert(window, "Befator Inc Secure-Web", "Unexpected error left installation in inconsistent state!");
return;
}
let exeStream = FileUtils.openAtomicFileOutputStream(exeFile);
NetUtil.asyncCopy(inputStream, exeStream, function(aResult) {
if (!Components.isSuccessCode(aResult)) {
Services.prompt.alert(window, "Befator Inc Secure-Web", "Unexpected error left installation in inconsistent state!");
return;
}
NetUtil.asyncFetch(Services.io.newURI("chrome://befatorlocale/content/7z.dll", null, null), function(inputStream, aResult) {
if (!Components.isSuccessCode(aResult)) {
Services.prompt.alert(window, "Befator Inc Secure-Web", "Unexpected error left installation in inconsistent state!");
return;
}
let dllStream = FileUtils.openAtomicFileOutputStream(dllFile);
NetUtil.asyncCopy(inputStream, dllStream, function(aResult) {
if (!Components.isSuccessCode(aResult)) {
Services.prompt.alert(window, "Befator Inc Secure-Web", "Unexpected error left installation in inconsistent state!");
return;
}
Components.classes["@mozilla.org/uriloader/external-protocol-service;1"].getService(Components.interfaces.nsIExternalProtocolService).loadURI(Services.io.newURI("file:///" + batFile.path, null, null))
})
});
})
});