1 // This code is heavily inspired by Chris Pederick (useragentswitcher) install.js
\r
2 // Contributors: Philip Chee, deathburger
\r
4 // Philip Chee: Added installation of prefs, components, and locales.
\r
5 // deathburger: Refactored to move all changable items to the top of the file.
\r
7 // Editable Items Begin
\r
8 var displayName = "ViewSourceWith";
\r
9 var version = "0.0.8.39";
\r
10 var name = "viewsourcewith";
\r
12 // The following three sets of variables tell this installer script how your
\r
13 // extension directory structure looks.
\r
14 // If your jar file contains content/packagename use the second packageDir
\r
15 // variable. Same rule applies for skinDir and localeDir. I set them up
\r
16 // independent of each other just in case an extension layout is wacky.
\r
17 //var packageDir = "/"
\r
18 var packageDir = "/" + name + "/"
\r
20 var skinDir = "/" + name + "/"
\r
21 //var localeDir = "/"
\r
22 var localeDir = "/" + name + "/"
\r
24 var locales = new Array("en-US", "it-IT", "fr-FR", "es-ES",
\r
25 "pl-PL", "ja-JP", "zh-TW", "pt-BR",
\r
26 "de-DE", "ru-RU", "nl-NL", "es-AR",
\r
27 "cs-CZ", "zh-CN", "tr-TR", "sk-SK",
\r
28 "az-AZ", "da-DK", "fa-IR", "hr-HR",
\r
30 var skins = new Array( "classic", "modern");
\r
31 var prefs = new Array( "t2c.js" );
\r
32 var components = new Array( );
\r
33 var searchPlugins = new Array( );
\r
35 // Mozilla Suite/Seamonkey stores all pref files in a single directory
\r
36 // under the application directory. If the name of the preference file(s)
\r
37 // is/are not unique enough, you may override other extension preferences.
\r
38 // set this to true if you need to prevent this.
\r
39 var disambiguatePrefs = true;
\r
41 // Editable Items End
\r
43 var jarName = name + ".jar";
\r
44 var jarFolder = "content" + packageDir
\r
47 var folder = getFolder("Profile", "chrome");
\r
48 var prefFolder = getFolder(getFolder("Program", "defaults"), "pref");
\r
49 var compFolder = getFolder("Components");
\r
50 var searchFolder = getFolder("Plugins");
\r
52 var existsInApplication = File.exists(getFolder(getFolder("chrome"), jarName));
\r
53 var existsInProfile = File.exists(getFolder(folder, jarName));
\r
55 var contentFlag = CONTENT | PROFILE_CHROME;
\r
56 var localeFlag = LOCALE | PROFILE_CHROME;
\r
57 var skinFlag = SKIN | PROFILE_CHROME;
\r
59 // If the extension exists in the application folder or it doesn't exist
\r
60 // in the profile folder and the user doesn't want it installed to the
\r
62 if(existsInApplication ||
\r
63 (!existsInProfile &&
\r
64 !confirm( "Do you want to install the " + displayName +
\r
65 " extension into your profile folder?\n" +
\r
66 "(Cancel will install into the application folder)")))
\r
68 contentFlag = CONTENT | DELAYED_CHROME;
\r
69 folder = getFolder("chrome");
\r
70 localeFlag = LOCALE | DELAYED_CHROME;
\r
71 skinFlag = SKIN | DELAYED_CHROME;
\r
74 initInstall(displayName, name, version);
\r
75 setPackageFolder(folder);
\r
76 error = addFile(name, version, "chrome/" + jarName, folder, null);
\r
78 // If adding the JAR file succeeded
\r
79 if(error == SUCCESS)
\r
81 folder = getFolder(folder, jarName);
\r
83 registerChrome(contentFlag, folder, jarFolder);
\r
84 for (var i = 0; i < locales.length; i++) {
\r
85 registerChrome(localeFlag, folder, "locale/" + locales[i] + localeDir);
\r
88 for (var i = 0; i < skins.length; i++) {
\r
89 registerChrome(skinFlag, folder, "skin/" + skins[i] + skinDir);
\r
92 for (var i = 0; i < prefs.length; i++) {
\r
93 if (!disambiguatePrefs) {
\r
94 addFile(name + " Defaults", version, "defaults/preferences/" + prefs[i],
\r
95 prefFolder, prefs[i], true);
\r
97 addFile(name + " Defaults", version, "defaults/preferences/" + prefs[i],
\r
98 prefFolder, name + "-" + prefs[i], true);
\r
102 for (var i = 0; i < components.length; i++) {
\r
103 addFile(name + " Components", version, "components/" + components[i],
\r
104 compFolder, components[i], true);
\r
107 for (var i = 0; i < searchPlugins.length; i++) {
\r
108 addFile(name + " searchPlugins", version, "searchplugins/" + searchPlugins[i],
\r
109 searchFolder, searchPlugins[i], true);
\r
112 error = performInstall();
\r
114 // If the install failed
\r
115 if(error != SUCCESS && error != REBOOT_NEEDED)
\r
117 displayError(error);
\r
118 cancelInstall(error);
\r
122 alert("The installation of the " + displayName + " extension succeeded.");
\r
127 displayError(error);
\r
128 cancelInstall(error);
\r
131 // Displays the error message to the user
\r
132 function displayError(error)
\r
134 // If the error code was -215
\r
135 if(error == READ_ONLY)
\r
137 alert("The installation of " + displayName +
\r
138 " failed.\nOne of the files being overwritten is read-only.");
\r
140 // If the error code was -235
\r
141 else if(error == INSUFFICIENT_DISK_SPACE)
\r
143 alert("The installation of " + displayName +
\r
144 " failed.\nThere is insufficient disk space.");
\r
146 // If the error code was -239
\r
147 else if(error == CHROME_REGISTRY_ERROR)
\r
149 alert("The installation of " + displayName +
\r
150 " failed.\nChrome registration failed.");
\r
154 alert("The installation of " + displayName +
\r
155 " failed.\nThe error code is: " + error);
\r