106 lines
3.4 KiB
JavaScript
106 lines
3.4 KiB
JavaScript
// constants
|
|
const APP_DISPLAY_NAME = "OpenERP Thunderbird Plugins";
|
|
const APP_NAME = "OpenERP";
|
|
const APP_VERSION = "1.0";
|
|
const WARNING = "WARNING: You need administrator privileges to install OpenERP Thunderbird Plugin. It will be installed in the application directory for all users.";
|
|
const VERSION_ERROR = "This extension can only be installed in a version higher than 2.0";
|
|
const NOT_WRITABLE_ERROR = "This extension requires write access to the application directory to install properly."
|
|
const locales = [
|
|
"en-US",
|
|
null
|
|
];
|
|
|
|
// Gecko 1.7 doesn't support custom button labels
|
|
var incompatible = (typeof Install.BUTTON_POS_0 == "undefined");
|
|
if (incompatible)
|
|
alert(VERSION_ERROR);
|
|
|
|
if (!incompatible) {
|
|
// Check whether all directories can be accessed
|
|
var dirList = [
|
|
getFolder("Components"),
|
|
getFolder(getFolder("Program", "defaults"), "pref")
|
|
];
|
|
for (var i = 0; i < dirList.length; i++)
|
|
if (!File.isWritable(dirList[i]))
|
|
incompatible = true;
|
|
|
|
if (incompatible)
|
|
alert(NOT_WRITABLE_ERROR);
|
|
}
|
|
|
|
if (!incompatible && confirm(WARNING, APP_DISPLAY_NAME)) {
|
|
/* Pre-Install Cleanup (for prior versions) */
|
|
|
|
// List of files to be checked
|
|
var checkFiles = [
|
|
[getFolder("Components"), "nsXmlRpcClient.js"], // Root component
|
|
[getFolder("Components"), "xml-rpc.xpt"], // Component interface
|
|
];
|
|
|
|
// Remove any existing files
|
|
initInstall("pre-install", "/rename", "0.0"); // open dummy-install
|
|
for (var i = 0 ; i < checkFiles.length ; i++) {
|
|
var currentDir = checkFiles[i][0];
|
|
var name = checkFiles[i][1];
|
|
var oldFile = getFolder(currentDir, name);
|
|
|
|
// Find a name to rename the file into
|
|
var newName = name + "-uninstalled";
|
|
for (var n = 1; File.exists(oldFile) && File.exists(getFolder(currentDir, newName)); n++)
|
|
newName = name + n + "-uninstalled";
|
|
|
|
if (File.exists(oldFile))
|
|
File.rename(oldFile, newName);
|
|
}
|
|
performInstall(); // commit renamed files
|
|
|
|
/* Main part of the installation */
|
|
|
|
var chromeType = DELAYED_CHROME;
|
|
|
|
var files = [
|
|
["components/nsXmlRpcClient.js", getFolder("Components")],
|
|
["components/xml-rpc.xpt", getFolder("Components")],
|
|
["defaults/preferences/tiny.js", getFolder(getFolder("Program", "defaults"), "pref")],
|
|
];
|
|
|
|
// initialize our install
|
|
initInstall(APP_NAME, APP_PACKAGE, APP_VERSION);
|
|
|
|
// Add files
|
|
for (var i = 0; i < files.length; i++)
|
|
addFile(APP_NAME, APP_VERSION, files[i][0], files[i][1], null);
|
|
|
|
try {
|
|
var err = registerChrome(CONTENT | chromeType, jar, "content/");
|
|
if (err != SUCCESS)
|
|
throw "Chrome registration for content failed (error code " + err + ").";
|
|
|
|
err = registerChrome(SKIN | chromeType, jar, "skin/classic/");
|
|
if (err != SUCCESS)
|
|
throw "Chrome registration for skin failed (error code " + err + ").";
|
|
|
|
for (i = 0; i < locales.length; i++) {
|
|
if (!locales[i])
|
|
continue;
|
|
|
|
err = registerChrome(LOCALE | chromeType, jar, "locale/" + locales[i] + "/");
|
|
if (err != SUCCESS)
|
|
throw "Chrome registration for " + locales[i] + " locale failed (error code " + err + ").";
|
|
}
|
|
|
|
var err = performInstall();
|
|
if (err != SUCCESS && err != 999)
|
|
throw "Committing installation failed (error code " + err + ").";
|
|
|
|
alert("OpenERP Thunderbird Plugin " + APP_VERSION + " is now installed.\n" +
|
|
"It will become active after you restart your browser.");
|
|
}
|
|
catch (ex) {
|
|
alert("Installation failed: " + ex + "\n" +
|
|
"You probably don't have the necessary permissions (log in as system administrator).");
|
|
cancelInstall(err);
|
|
}
|
|
}
|