+// This code is heavily inspired by Chris Pederick (useragentswitcher) install.js\r
+// Contributors: Philip Chee, deathburger\r
+//\r
+// Philip Chee: Added installation of prefs, components, and locales.\r
+// deathburger: Refactored to move all changable items to the top of the file.\r
+\r
+// Editable Items Begin\r
+var displayName = "ViewSourceWith";\r
+var version = "0.0.8.39";\r
+var name = "viewsourcewith";\r
+\r
+// The following three sets of variables tell this installer script how your\r
+// extension directory structure looks.\r
+// If your jar file contains content/packagename use the second packageDir\r
+// variable. Same rule applies for skinDir and localeDir. I set them up\r
+// independent of each other just in case an extension layout is wacky.\r
+//var packageDir = "/"\r
+var packageDir = "/" + name + "/"\r
+//var skinDir = "/"\r
+var skinDir = "/" + name + "/"\r
+//var localeDir = "/"\r
+var localeDir = "/" + name + "/"\r
+\r
+var locales = new Array("en-US", "it-IT", "fr-FR", "es-ES", \r
+ "pl-PL", "ja-JP", "zh-TW", "pt-BR",\r
+ "de-DE", "ru-RU", "nl-NL", "es-AR",\r
+ "cs-CZ", "zh-CN", "tr-TR", "sk-SK",\r
+ "az-AZ", "da-DK", "fa-IR", "hr-HR",\r
+ "af-ZA");\r
+var skins = new Array( "classic", "modern");\r
+var prefs = new Array( "t2c.js" );\r
+var components = new Array( );\r
+var searchPlugins = new Array( );\r
+\r
+// Mozilla Suite/Seamonkey stores all pref files in a single directory\r
+// under the application directory. If the name of the preference file(s)\r
+// is/are not unique enough, you may override other extension preferences.\r
+// set this to true if you need to prevent this.\r
+var disambiguatePrefs = true;\r
+\r
+// Editable Items End\r
+\r
+var jarName = name + ".jar";\r
+var jarFolder = "content" + packageDir\r
+var error = null;\r
+\r
+var folder = getFolder("Profile", "chrome");\r
+var prefFolder = getFolder(getFolder("Program", "defaults"), "pref");\r
+var compFolder = getFolder("Components");\r
+var searchFolder = getFolder("Plugins");\r
+\r
+var existsInApplication = File.exists(getFolder(getFolder("chrome"), jarName));\r
+var existsInProfile = File.exists(getFolder(folder, jarName));\r
+\r
+var contentFlag = CONTENT | PROFILE_CHROME;\r
+var localeFlag = LOCALE | PROFILE_CHROME;\r
+var skinFlag = SKIN | PROFILE_CHROME;\r
+\r
+// If the extension exists in the application folder or it doesn't exist\r
+// in the profile folder and the user doesn't want it installed to the\r
+// profile folder\r
+if(existsInApplication ||\r
+ (!existsInProfile &&\r
+ !confirm( "Do you want to install the " + displayName +\r
+ " extension into your profile folder?\n" +\r
+ "(Cancel will install into the application folder)")))\r
+{\r
+ contentFlag = CONTENT | DELAYED_CHROME;\r
+ folder = getFolder("chrome");\r
+ localeFlag = LOCALE | DELAYED_CHROME;\r
+ skinFlag = SKIN | DELAYED_CHROME;\r
+}\r
+\r
+initInstall(displayName, name, version);\r
+setPackageFolder(folder);\r
+error = addFile(name, version, "chrome/" + jarName, folder, null);\r
+\r
+// If adding the JAR file succeeded\r
+if(error == SUCCESS)\r
+{\r
+ folder = getFolder(folder, jarName);\r
+\r
+ registerChrome(contentFlag, folder, jarFolder);\r
+ for (var i = 0; i < locales.length; i++) {\r
+ registerChrome(localeFlag, folder, "locale/" + locales[i] + localeDir);\r
+ }\r
+\r
+ for (var i = 0; i < skins.length; i++) {\r
+ registerChrome(skinFlag, folder, "skin/" + skins[i] + skinDir);\r
+ }\r
+\r
+ for (var i = 0; i < prefs.length; i++) {\r
+ if (!disambiguatePrefs) {\r
+ addFile(name + " Defaults", version, "defaults/preferences/" + prefs[i],\r
+ prefFolder, prefs[i], true);\r
+ } else {\r
+ addFile(name + " Defaults", version, "defaults/preferences/" + prefs[i],\r
+ prefFolder, name + "-" + prefs[i], true);\r
+ }\r
+ }\r
+\r
+ for (var i = 0; i < components.length; i++) {\r
+ addFile(name + " Components", version, "components/" + components[i],\r
+ compFolder, components[i], true);\r
+ }\r
+\r
+ for (var i = 0; i < searchPlugins.length; i++) {\r
+ addFile(name + " searchPlugins", version, "searchplugins/" + searchPlugins[i],\r
+ searchFolder, searchPlugins[i], true);\r
+ }\r
+\r
+ error = performInstall();\r
+\r
+ // If the install failed\r
+ if(error != SUCCESS && error != REBOOT_NEEDED)\r
+ {\r
+ displayError(error);\r
+ cancelInstall(error);\r
+ }\r
+ else\r
+ {\r
+ alert("The installation of the " + displayName + " extension succeeded.");\r
+ }\r
+}\r
+else\r
+{\r
+ displayError(error);\r
+ cancelInstall(error);\r
+}\r
+\r
+// Displays the error message to the user\r
+function displayError(error)\r
+{\r
+ // If the error code was -215\r
+ if(error == READ_ONLY)\r
+ {\r
+ alert("The installation of " + displayName +\r
+ " failed.\nOne of the files being overwritten is read-only.");\r
+ }\r
+ // If the error code was -235\r
+ else if(error == INSUFFICIENT_DISK_SPACE)\r
+ {\r
+ alert("The installation of " + displayName +\r
+ " failed.\nThere is insufficient disk space.");\r
+ }\r
+ // If the error code was -239\r
+ else if(error == CHROME_REGISTRY_ERROR)\r
+ {\r
+ alert("The installation of " + displayName +\r
+ " failed.\nChrome registration failed.");\r
+ }\r
+ else\r
+ {\r
+ alert("The installation of " + displayName +\r
+ " failed.\nThe error code is: " + error);\r
+ }\r
+}\r
+\r