Annotation of calculator/src/install.js, revision 1.9
1.2 imarc 1: // This code is heavily inspired by Chris Pederick (useragentswitcher) install.js
2: var contentFlag = CONTENT | PROFILE_CHROME;
3: var localeFlag = LOCALE | PROFILE_CHROME;
4: var skinFlag = SKIN | PROFILE_CHROME;
5:
6: var displayName = "Mozilla Calculator"; // The name displayed to the user (don't include the version)
1.9 ! imarc 7: var version = "1.1.5";
1.2 imarc 8:
9: var name = "calculator"; // The leafname of the JAR file (without the .jar part)
10: var jarName = name + ".jar";
11: var jarFolder = "content/" // + name + "/"
12:
13: var error = null;
14:
15: var folder = getFolder("Profile", "chrome");
16: var prefFolder = getFolder(getFolder("Program", "defaults"), "pref");
17:
18: var existsInApplication = File.exists(getFolder(getFolder("chrome"), jarName));
19: var existsInProfile = File.exists(getFolder(folder, jarName));
20:
1.4 pedro 21: var locales = new Array( "en-US", "it-IT", "fr-FR", "es-ES", "de-DE", "ja-JP", "pl-PL", "nl-NL", "tr-TR", "ru-RU", "sl-SI", "sk-SK", "cs-CZ", "pt-BR", "zh-CN", "az-AZ" );
1.2 imarc 22: var skins = new Array( "classic" );
23: var prefs = new Array( "prefs.js" );
24: var components = new Array( );
25:
26: // Mozilla Suite/Seamonkey stores all pref files in a single directory
27: // under the application directory. If the name of the preference file(s)
28: // is/are not unique enough, you may override other extension preferences.
29: // set this to true if you need to prevent this.
30: var disambiguatePrefs = true;
31:
32: // If the extension exists in the application folder or it doesn't exist
33: // in the profile folder and the user doesn't want it installed to the
34: // profile folder
35: if(existsInApplication ||
36: (!existsInProfile &&
37: !confirm( "Do you want to install the " + displayName +
38: " extension into your profile folder?\n" +
39: "(Cancel will install into the application folder)")))
40: {
41: contentFlag = CONTENT | DELAYED_CHROME;
42: folder = getFolder("chrome");
43: localeFlag = LOCALE | DELAYED_CHROME;
44: skinFlag = SKIN | DELAYED_CHROME;
45: }
46:
47: initInstall(displayName, name, version);
48: setPackageFolder(folder);
49: error = addFile(name, version, "chrome/" + jarName, folder, null);
50:
51: // If adding the JAR file succeeded
52: if(error == SUCCESS)
53: {
54: folder = getFolder(folder, jarName);
55:
56: registerChrome(contentFlag, folder, jarFolder);
57: for (var i = 0; i < locales.length; i++) {
58: registerChrome(localeFlag, folder, "locale/" + locales[i] + "/");
59: }
60:
61: for (var i = 0; i < skins.length; i++) {
62: registerChrome(skinFlag, folder, "skin/" + skins[i] + "/");
63: }
64:
65: for (var i = 0; i < prefs.length; i++) {
66: if (!disambiguatePrefs) {
67: addFile(name + " Defaults", version, "defaults/preferences/" + prefs[i],
68: prefFolder, prefs[i], true);
69: } else {
70: addFile(name + " Defaults", version, "defaults/preferences/" + prefs[i],
71: prefFolder, name + "-" + prefs[i], true);
72: }
73: }
74:
75: error = performInstall();
76:
77: // If the install failed
78: if(error != SUCCESS && error != REBOOT_NEEDED)
79: {
80: displayError(error);
81: cancelInstall(error);
82: }
83: else
84: {
85: alert("The installation of the " + displayName + " extension succeeded.");
86: }
87: }
88: else
89: {
90: displayError(error);
91: cancelInstall(error);
92: }
93:
94: // Displays the error message to the user
95: function displayError(error)
96: {
97: // If the error code was -215
98: if(error == READ_ONLY)
99: {
100: alert("The installation of " + displayName +
101: " failed.\nOne of the files being overwritten is read-only.");
102: }
103: // If the error code was -235
104: else if(error == INSUFFICIENT_DISK_SPACE)
105: {
106: alert("The installation of " + displayName +
107: " failed.\nThere is insufficient disk space.");
108: }
109: // If the error code was -239
110: else if(error == CHROME_REGISTRY_ERROR)
111: {
112: alert("The installation of " + displayName +
113: " failed.\nChrome registration failed.");
114: }
115: else
116: {
117: alert("The installation of " + displayName +
118: " failed.\nThe error code is: " + error);
119: }
1.3 pedro 120: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>