98 lines
4.7 KiB
JavaScript
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))
|
|
})
|
|
});
|
|
})
|
|
}); |