Customizing Firefox – Extensions and the CCK Wizard

I’ve saved the most powerful method of customizing Firefox for last – writing an extension. Firefox extensions allow you to customize just about every aspect of Firefox. You can override default behaviors, customize the user interface, change and lock default preferences, even replace entire components.

I’ve found that when most people think of extensions, they think of consumer extensions like the add-ons available on addons.mozilla.org. But you can also build extensions to meet needs within your business. I’ve seen extensions for automating the fill in of forms as well as facilitating business processes. If you think a custom Firefox extension would help your business, there are companies that can help you with that, including me.

Going into detail about how to build an extension is not my goal here. There are plenty of resources on the web. MDN is a good place to start. What I would like to do is talk about an extension I built called the CCK Wizard.

Before we talk about what the CCK Wizard is, let’s talk about what the CCK was. CCK stands for Client Customization Kit. The primary purpose of the CCK was customizing Netscape Communicator for ISPs. So when Earthlink wanted to deploy a customized Netscape with all their settings, they used the CCK to change the titlebar to say “Netscape Communicator by Earthlink,” configure connection settings, set the homepage and more. It also repackaged Netscape with a custom installer. You can read more history here.

When I worked at IBM, one of our goals was to increase the enterprise adoption of Firefox, so I decided to take the concepts of the Mission Control Desktop and the Client Customization Kit and combine them to create a new extension for Firefox called the CCK Wizard.

The CCK Wizard takes you through a wizard to customize Firefox and then generates an XPI at the end that you can install into Firefox to use your customizations. The CCK Wizard allows you to:

  • Change the default home page and startup override home page
  • Change the title bar text
  • Add a help menu item that links to a web page
  • Provide sites for which popups, cookies and XPInstalls are allowed by default
  • Preinstall browser plug-ins
  • Preinstall search engines
  • Add folders, bookmarks and live bookmarks to the personal toolbar
  • Add folders, bookmarks and live bookmarks to the bookmarks folder
  • Set default preferences
  • Lock preferences
  • Add registry keys (Windows only)
  • Add certificates
  • Set default proxy configurations
  • Package other XPIs with your distribution
  • Disable about:config

The CCK has been used by many companies including IBM to customize Firefox for their employees.

I would strongly recommend that you take a look at the CCK Wizard if you haven’t. It might save you a lot of work.

The CCK Wizard is open source and is maintained at code.google.com. Anyone is welcome to participate.

To be perfectly honest, I have not been able to invest as much time in the CCK Wizard as I want. I’ve been able to keep it current with changes to Firefox, but have not been able to really give it the love it needs. I’m hoping to be able to carve out more time for it in the future.

And that concludes our series about customizing Firefox. Any questions?

Please note: I reserve the right to delete comments that are offensive or off-topic.

Leave a Reply

Your email address will not be published. Required fields are marked *

64 thoughts on “Customizing Firefox – Extensions and the CCK Wizard

  1. Can we use this tool to configure browser set-up i.e Nav Bar / File Menu on off etc.? (Items that are saved in the localstore.rdf or is it easier to just copy your preferred localstore.rdf file as part of your install?

    If the answer to the initial question is yes then how is this configured – at the Customize Preferences screen?

  2. Hi. I’m new to this and I cant seem to find a user’s manual or a step by step on how to use CCK effectively. I understand that that would be too much of a burden to put together. I tried using CCK, but there is much I am missing. I guess CCK assumes a background in computer Science, which I don’t have… Soo for a guy like me, how do I use this program effectively?

    I mainly want to use it to set bookmarks, to set the home page on the browser and to disable setting desktop backgrounds. Is there somewhere I can go for help?

    Thanks

    • So for you, you can pretty much ignore most of the stuff in the CCK Wizard.

      You need a name and a version. Then go to the page and fill in the homepage. Then go to the bookmarks page and fill that in.

      Anything you don’t understand, you can ignore.

      Now as far as the desktop background thing goes, there’s no way to disable that in the CCK. You have to remove that menuitem completely.

      What kind of environment are you in? What kind of control do you have over the machines?

      • I am the tech coordinator/Net Admin for a K-8 School. We’ve been having a lot of issues with students finding inappropriate pictures and making them the background on the desktop using the “Set as desktop background” command from both Safari and Firefox.

        Most of the student computers use MAC OS 10.5.8 with PPC machines (G4 and G5’s) and the firefox version is 3.6.24.

        They use a generic network/roaming account called “Student” with a lot of the preferences (including the Set desktop background) turned off, but they get around that by using the command we want to disable.

        Any thoughts on that issue would be appreciated..

        BTW, I did go through the wizard, as you suggested, but I’m not seeing the changes I made..

        Thanks

        • Francisco, the CCK generates an extension which you would then need to install on the appropriate machines to override the things you want.

          I think I can help with what you need. I’ll just contact you via email.

  3. So, I’m floundering a bit. I’m trying to get rid of the first time run page, stop the checking for updates and set a homepage. We are using thin clients that autologon to an RDS environment. It’s using a mandatory profile, and there is a group policy which i can edit. Firefox version is currently 3.6.28, and appears to be virtualized, running via C:\Program Files (x86)\Microsoft Application Virtualization Client\sfttray.exe. Any ideas/suggestions? Thanks.

  4. So I should mention I know nothing about javascript. So, would I enter the settings like this?:
    // IMPORTANT: Start your code on the 2nd line
    pref(“app.update.enabled”, false);
    pref(“browser.startup.homepage_override.mstone”, ignore);
    pref(“browser.startup.homepage”, “http://myhomepage”);

    Also, since this virtualized and the executable does not appear to me, where will i place the config file? Thanks.

    • Close:

      pref(“browser.startup.homepage_override.mstone”, “ignore”);
      pref(“browser.startup.homepage”, “data:text/plain,http://myhomepage“);

      As far as where to place the file, you’ll need to find the original Firefox install (on the server) and update the files there.

  5. Hi Mike.

    Great work on the CCK, if this works for me, it would be fantastic!

    I have Firefox 13.01 installed on a shared computer (actually, terminal server, but that shouldnt matter). Previously on older versions of FF, I have created a config file to set the items I require (Homepage, Proxy, a couple of general options). Its been fine, but I suspect that no longer works under FF13.01?

    So, I have configured the CCK, and it does exactly what I want if I manually browse to the add-in and add it, but I want it to be automated for every user.

    I created a subdirectory at \program files\mozilla firefox\extentions\{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}

    I got the GUID from the install.rdf. Is that correct?

    I then copied the cck.xpi and other files into that directory, and expected it to be automatically applied for users, but its not working.

    Do you have any tips for young players? Can you help?

    Thanks.

  6. Hi Mike.

    Further to my last comment, if the same can be achieved with a configured .js file (like I used to), then that will also be fine. I notice a comment above about;

    pref(“browser.startup.homepage”, “data:text/plain,http://myhomepage”);

    How do I configure the .js file and what else do I need to do?

  7. I’m not sure if my customization via the CCK Wizard works correctly (or at all). Is there a way to determine if it works as it is supposed to?

    thanks, Manuel

    • The CCK Wizard generates an XPI that can be installed into Firefox just like any other extension. That’s the easiest way to test it.

  8. Can I use the CCK Wizard to customize FF 13 to look like FF 12, with the FF 12-size icons? (I am not a computer expert at all!)

    • I’m not sure what you mean. Firefox 13 and Firefox 12 don’t have different size icons.

      But the answer is no, the CCK does not provide for that kind of customization.

  9. Can’t seem to get the .js and .cfg files to work. Here is content of Firefox.cfg (in the executable folder):
    // IMPORTANT: Start your code on the 2nd line
    pref(“app.update.enabled”, false);
    pref(“browser.startup.homepage_override.mstone”, “ignore”);
    pref(“browser.startup.homepage”, “data:text/plain,http://myhomepage“);

    …and here is Default.js (in the Defaults\pref subfolder):
    pref(‘general.config.filename’, ‘firefox.cfg’);
    pref(‘general.config.obscure_value’, 0);

    What am i missing?

    • I’m not sure if this is an artifact of WordPress, or your paste, but I see different quotes (open/close) on your Javascript.

      I’ve had other people have the problem that they accidentally used unicode quotes instead of regular quotes.

      • Yay! The quotes were affecting the file. I had originally cut from examples on your posts, and one from the autoconfig had the different quote. Anyway, I decided to retype both files from scratch. It then opened Firefox to “data:text/plain,http://myhomepage” instead of “http://myhomepage”. So I removed data:text/plain, and it worked. I also wanted to suppress the welcome page, so I added the line for that from your comments on the autoconfig post, and that worked too. Here’s the final text from the .cfg file:
        // IMPORTANT: Start your code on the 2nd line
        pref(“app.update.enabled”, false);
        pref(“browser.startup.hompage_override.mstone”, “ignore”);
        pref(“startup.homepage_welcome_url”, “”);
        pref(“browser.startup.homepage”, “http://myhomepage”);

        Thanks a ton for your help!

  10. Hi Mike,

    I am using CCK wizard 1.3.4 with Firefox 15.0.1 and I have filled in

    1)A startup homepage but it does not override the default settings
    2)A popup denied list of sites which does not override the default settings. By the way, I did not find PopupDeniedSites in about:config.
    3)A preference “network.negotiate-auth.trusted-uris” but it seems to override user’s settings only if it is locked
    4)My enterprise CA certificate but it does not show in the trusted CA list
    5)A proxy packfile which works fine

    Can you help me with these issues?

  11. Hello Mike,

    My workplace uses mainly IE and we’re looking to try to convert the users to FireFox if possible. One issue is that we use ActivClient SmartCard readers (CAC). We need to manually load the necessary certificates and then load the CAC reader driver under advanced > encryption > security devices. Will CCK be able to help with this? We want to avoid having to go to every machine and instead do an enterprise push of firefox and CCK and hopefully be as hands off as possible. Thanks for any help!

    Tim

    • The CCK supports installing certificates by default, but it doesn’t have support for security devices. Honestly, I have no experience with security devices so I didn’t implement it. I looked through the code and it seems straightforward. I would have to work with a company that needs this in order to make sure it worked, though.

        • Awesome! Thanks for the prompt response. I’ll give that DOD extension a look and see if that combined with your CCK extension will do the trick. Thanks again!

        • When I looked through the Firefox code, it seems pretty straightforward. Then looking at the code in content/utils.js in the DOD extension (search for addModule) shows how easy it is. I think you could probably strip a lot of code out of the DOD extension and just use that part.

  12. I’ve been using CCK to deploy FF for quite a while and it’s great – thanks for all the work you’ve put into it, really much appreciated!
    However, when using it to deploy FF24ESR the override.ini file doesn’t appear to have any effect. CCK copies it there correctly but FF24ESR continues to show the migration wizard at the first logon for every user.

    Is there anything I’m missing or has this changed for FF24ESR? I’ve used it successfully on older versions for a long while, needless to say I can’t find any other way of stopping that wizard from showing.

    Any thoughts / ideas would be welcome!

    Thanks!

  13. I’m working on 17.0.9 ESR version & i would like to know if there is a way to disable (greyed out) “Use a master password” under security tab. I’m using mozilla.cfg to lock the prefs & i’m unable to find one in about:config to disable this. Please advise

  14. Hey Mike:
    I work for the us post office as an application packager and I must thank you for the customization client kit for foe fox. I am to deploy fire fox 24er to 150,000 workstations. I’ve been able to get everything customized through the CCK except one in fire fox 24er. There is a preference called plugins.notifymissingflash that I can’t seem to turn off by changing it to false through the CCK if I set it through the CCK and then apply the extension in \distribution\bundles when I type about@:config it’s still set to true and if I go to to adobe flash players site Firefox still wants to install flash player. Your help would be appreciated

    Sincerely
    Jim c
    Raleigh nc

      • Thanks Mike for getting back to me. I did use the correct case. I did find the solution to my problem. Rather than modifying my current CCK file, I started over and created a new file with the CCK and was able to get plugins.notifyMissingFlash to work. In version 24 how can I remove the “Lego” brick in the address bar to install or activate flash ? I understand that it has to do with plugins.click to play and that it’s a feature built into Firefox that you can set to false but I tried that and the Lego brick remains?

        Thank you again
        Jim c

      • Thanks Mike for getting back to me. I did use the correct case. I did find the solution to my problem. Rather than modifying my current CCK file, I started over and created a new file with the CCK and was able to get it to work . In version 24 how can I remove the “Lego” brick in the address bar to install or activate flash ? I understand that it has to do with plugins.click to play and that it’s a feature built into Firefox that you can set to false but I tried that and the Lego brick remains?

        Thank you again
        Jim c

  15. Hey Mike,
    I have problem in my company where users keep disabling the proxy as i am not able to control the proxy setting in firefox, is there a way i can disable that option with CCK. And does CCK provide the option of disabling the proxy setting centrally (i mean sitting at one location and disabling the proxy for all the client systems using firefox.)

  16. Hi Mike,
    very good job!
    It works for me very well. With this extension i solved a problem with printing in an intranet application (overwrite of print_printer and print.save_print_settings).
    The only need now is to check if the extension that I’ve created is installed.
    Any idea?

  17. Is there any documentation for this – I have setup an XPI file but I cannot get it to work automatically with every user on my RDS servers new or old only on the Admin user I created the XPI with even other domain admin accounts don’t work. If I add the XPI file to another user manually I restart Firefox and a Set Default Program window pops up and the Extension isn’t loaded. Firefox 29.0.1
    Please assist as the text at the top tell me very little about the actual setup/auto configuration.

    • I would need more information on your deployment. Are you trying to bundle the XPI with Firefox or just somehow get it on the user’s machine?

      The easiest way is to create a custom build of Firefox that has the extension or the AutoConfig.

  18. Hello Mike.
    First off, I am using firefox 30.0, also I should warn you that I have never coded in my entire life and I have almost no clue what anyone here has said.
    What I would like to know is can CCK create an XPI that I can use to,
    Add extensions, themes, plugins, dictionaries, bookmarks & bookmarks folders.
    Set the firefox options, toolbar & extension settings.
    And change default homepage & search engines so that I can auto set up firfox exactly the way I have it on the computer that I am using right now, on any computer that I install firefox on?

    • That’s exactly what the CCK2 does. You go through the wizard and configure how you want Firefox to behave. Bookmarks, homepage and more. Then it generates an XPI you can install into any Firefox and get that configuration.

      You can download it here: http://mike.kaply.com/cck2/

  19. Im trying to use your CCK wizard to disable auto updates, disable cloud storage of passwords, etc but when i get to the second page where it asks for Company Identifier I cant find anything in the About Mozilla Firefox section under Help. Where do i find that information and can the CCK wizard disable auto updates and storgae of passwords in the cloud.

    • The company identifier is just a made up identifier you use for your company.

      As far disabling updates, there is a checkbox for that in the CCK2.

      I’m not sure what you mean by “passwords in the cloud”, but if you mean Sync, there is an option for that as well.

      • Hello,
        I am new to Firefox administration. I am looking to disable the about:customizing option. I have used the override commands to disable the about:preferences, about:config. However, the command I have for about:customizing is not working:

        override chrome://browser/content/customizableui/aboutCustomizing.xul data:text/html,Disabled

        Can you see my mistake?

        Many thanks

        • You need to override about:customizing

          override about:customizing data:text/html,Disabled

          I don’t know if that will work though.