Annotation of calculator/src/install.js, revision 1.1

1.1     ! imarc       1: // XpiInstaller
        !             2: // By Pike (Heavily inspired by code from Henrik Gemal and Stephen Clavering)
        !             3: 
        !             4: var XpiInstaller = {
        !             5: 
        !             6:        // --- Editable items begin ---
        !             7:        extFullName: 'Mozilla Calculator', // The name displayed to the user (don't include the version)
        !             8:        extShortName: 'calculator', // The leafname of the JAR file (without the .jar part)
        !             9:        extVersion: '0.7',
        !            10:        extAuthor: 'Marc Belmont',
        !            11:        extLocaleNames: null, // e.g. ['en-US', 'en-GB']
        !            12:        extSkinNames: null, // e.g. ['classic', 'modern']
        !            13:        extPostInstallMessage: 'Success! Please restart your browser to finish the installation.', // Set to null for no post-install message
        !            14:        // --- Editable items end ---
        !            15: 
        !            16:        profileInstall: true,
        !            17:        silentInstall: false,
        !            18: 
        !            19:        install: function()
        !            20:        {
        !            21:                var jarName = this.extShortName + '.jar';
        !            22:                var profileDir = Install.getFolder('Profile', 'chrome');
        !            23: 
        !            24:                // Parse HTTP arguments
        !            25:                this.parseArguments();
        !            26: 
        !            27:                // Check if extension is already installed in profile
        !            28:                if (File.exists(Install.getFolder(profileDir, jarName)))
        !            29:                {
        !            30:                        if (!this.silentInstall)
        !            31:                        {
        !            32:                                Install.alert('Updating existing Profile install of ' + this.extFullName + ' to version ' + this.extVersion + '.');
        !            33:                        }
        !            34:                        this.profileInstall = true;
        !            35:                }
        !            36:                else if (!this.silentInstall)
        !            37:                {
        !            38:                        // Ask user for install location, profile or browser dir?
        !            39:                        this.profileInstall = Install.confirm('Install ' + this.extFullName + ' ' + this.extVersion + ' to your Profile directory (OK) or your Browser directory (Cancel)?');
        !            40:                }
        !            41: 
        !            42:                // Init install
        !            43:                var dispName = this.extFullName + ' ' + this.extVersion;
        !            44:                var regName = '/' + this.extAuthor + '/' + this.extShortName;
        !            45:                Install.initInstall(dispName, regName, this.extVersion);
        !            46: 
        !            47:                // Find directory to install into
        !            48:                var installPath;
        !            49:                if (this.profileInstall) installPath = profileDir;
        !            50:                else installPath = Install.getFolder('chrome');
        !            51: 
        !            52:                // Add JAR file
        !            53:                Install.addFile(null, 'chrome/' + jarName, installPath, null);
        !            54: 
        !            55:                // Register chrome
        !            56:                var jarPath = Install.getFolder(installPath, jarName);
        !            57:                var installType = this.profileInstall ? Install.PROFILE_CHROME : Install.DELAYED_CHROME;
        !            58: 
        !            59:                // Register content
        !            60:                Install.registerChrome(Install.CONTENT | installType, jarPath, 'content/' + this.extShortName + '/');
        !            61: 
        !            62:                // Register locales
        !            63:                for (var locale in this.extLocaleNames)
        !            64:                {
        !            65:                        var regPath = 'locale/' + this.extLocaleNames[locale] + '/' + this.extShortName + '/';
        !            66:                        Install.registerChrome(Install.LOCALE | installType, jarPath, regPath);
        !            67:                }
        !            68: 
        !            69:                // Register skins
        !            70:                for (var skin in this.extSkinNames)
        !            71:                {
        !            72:                        var regPath = 'skin/' + this.extSkinNames[skin] + '/' + this.extShortName + '/';
        !            73:                        Install.registerChrome(Install.SKIN | installType, jarPath, regPath);
        !            74:                }
        !            75: 
        !            76:                // Perform install
        !            77:                var err = Install.performInstall();
        !            78:                if (err == Install.SUCCESS || err == Install.REBOOT_NEEDED)
        !            79:                {
        !            80:                        if (!this.silentInstall && this.extPostInstallMessage)
        !            81:                        {
        !            82:                                Install.alert(this.extPostInstallMessage);
        !            83:                        }
        !            84:                }
        !            85:                else
        !            86:                {
        !            87:                        this.handleError(err);
        !            88:                        return;
        !            89:                }
        !            90:        },
        !            91: 
        !            92:        parseArguments: function()
        !            93:        {
        !            94:                // Can't use string handling in install, so use if statement instead
        !            95:                var args = Install.arguments;
        !            96:                if (args == 'p=0')
        !            97:                {
        !            98:                        this.profileInstall = false;
        !            99:                        this.silentInstall = true;
        !           100:                }
        !           101:                else if (args == 'p=1')
        !           102:                {
        !           103:                        this.profileInstall = true;
        !           104:                        this.silentInstall = true;
        !           105:                }
        !           106:        },
        !           107: 
        !           108:        handleError: function(err)
        !           109:        {
        !           110:                if (!this.silentInstall)
        !           111:                {
        !           112:                        Install.alert('Error: Could not install ' + this.extFullName + ' ' + this.extVersion + ' (Error code: ' + err + ')');
        !           113:                }
        !           114:                Install.cancelInstall(err);
        !           115:        }
        !           116: };
        !           117: 
        !           118: XpiInstaller.install();

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>