Monday, January 23, 2012

Packaging Mozilla Firefox

Most people dread while packaging Mozilla Firefox application and mostly try to make a silent installation of it. I was recently given task to package the latest Mozilla Firefox application.
The same procedure can be used for version 10.0.1, 11, 12 and 13, 14 and 15 as well as I have tried and it works fine for all of these.
I would like to share here how I could easily package it. Also by this method you will be able to do Proxy server settings.
First step is to do a Setup capture of the source exe which can be downloaded from Mozilla’s website. Take care that you do not have to launch the application after the installation is completed.
Second Step is to copy 3 files as stated below. You can add these files in your .wsi directly after the setup capture. These 3 files will solve all your issues.

1. Mozilla.cfg: This file needs to be added to "%programfiles%\Mozilla Firefox\" folder and should have this content:

//Firefox Default Settings
// set Firefox Default homepage
pref("browser.startup.homepage","http://your.intranet.com");
// disable default browser check
pref("browser.shell.checkDefaultBrowser", false);
// disable application updates
pref("app.update.enabled", false)
// disables the 'know your rights' button from displaying on first run
pref("browser.rights.3.shown", true);
// disables the request to send performance data from displaying
pref("toolkit.telemetry.prompted", 2);
pref("toolkit.telemetry.rejected", true);
//Firefox Default Settings
//set proxy server settings, choose whatever is required by your organization
pref("network.proxy.ftp", "your.proxy.server");
pref("network.proxy.ftp_port", 8080);
pref("network.proxy.gopher", " your.proxy.server ");
pref("network.proxy.gopher_port", 8080);
pref("network.proxy.http", " your.proxy.server ");
pref("network.proxy.http_port", 8080);
pref("network.proxy.no_proxies_on", "localhost, 127.0.0.1, *.server.local");
pref("network.proxy.type", 1);
pref("network.proxy.share_proxy_settings", true); // use the same proxy settings for all protocols


2. local-settings.js: This file needs to be added to "%programfiles%\Mozilla Firefox\defaults\pref" folder and should have this content:

pref("general.config.obscure_value", 0);
pref("general.config.filename", "mozilla.cfg");

3. override.ini : This file needs to be added to “%programfiles%\Mozilla Firefox\” folder and should have this content:

[XRE]
EnableProfileMigrator=false


It is just this simple you can now just remove the Desktop shortcut in your .wsi file and compile it to .msi file.

24 comments:

  1. What exactly does the override.ini do?
    What is its importance?

    ReplyDelete
  2. After you are done installing Firefox, and you run it for the first time, it asks you if you want to import settings and favorites from Internet Explorer. If this is going to truely be a scripted install, we don't want to click anything.
    Override.ini will prevent this from happening.

    ReplyDelete
  3. Anonymous1:21 PM

    Piyush, what if our networks proxy needs to use the "auto config script" ? I can change the network proxy type to 2 from 1 and it will mark that option but how to you get it to input the proxy address there?

    thanks much

    ReplyDelete
  4. Anonymous1:34 PM

    Nevermind I found it :)

    Its called
    network.proxy.autoconfig_url

    ReplyDelete
  5. Thanks for adding information here.

    ReplyDelete
  6. How do I script a custom action so that it removes any version that was previously installed with the mozilla setup.exe? Your tutorial is amazing though and I am not taking away from that.

    ReplyDelete
  7. How do you get it to uninstall previous versions? Installations created with the mozilla setup.exe aren't available to do a major upgrade. This tutorial is amazing work and thank you!

    ReplyDelete
  8. That is when managed software comes into picture. If from start you package Mozilla firefox, you can use upgrade code for every package in your install.
    However, now I would suggest you to look as this KB and see if it works for you.
    http://kb.mozillazine.org/Uninstalling_Firefox

    ReplyDelete
  9. Rainer12:54 AM

    How shouldi use the upgrade Code to do a upgrade of an previous installed Firefox? What is the "upgrade Code"? Where do i find it?

    ReplyDelete
  10. Read MSI.chm about upgrade code. Every package has an upgrade code. It is used to uninstall previous application before installation of this one.

    ReplyDelete
  11. Anonymous2:51 AM

    hi

    can any one help me to enable the add-ons in firefox 13.

    the add-ons are added using mst which put the add-ons into extensions folder.

    when i launch the shortcut, add-ons-> extensions, i can see the status as disabled.
    i tried using xpinstall.enabled, true but dint worked..

    thanks in advance

    ReplyDelete
  12. Anonymous10:29 AM

    Hello Piyush,

    Please let me know how to install Add-Ons for ALLUSERS profile?

    ReplyDelete
  13. Interesting and beautiful blog lovely presentation thanks for sharing your views..

    Visit at www.itechguru247.com for Unlimited Tech support call Toll Free number: 1-888-702-3607.

    ReplyDelete
  14. I would suggest you to follow the add-on procedure mentioned here and take a setup capture of it and see what changes it do.
    http://support.mozilla.org/en-US/kb/Customizing%20Firefox%20with%20add-ons

    ReplyDelete
  15. I packaged the Mozilla firefox 13

    http://support.mozilla.org/en-US/questions/820392?s=automate+profile+creation&r=1&e=un&as=s

    automate profile migration -
    That folder doesn't exist anymore, so you will have to create it. All files in that folder are copied to a new profile.
    ◦C:\Program Files\Mozilla Firefox\defaults\profile\

    ReplyDelete
  16. http://support.mozilla.org/en-US/questions/820392?s=automate+profile+creation&r=1&e=un&as=s
    Mozilla 13.0.1
    All the config can be in the prefs.js
    and copied to a new profile.
    ◦C:\Program Files\Mozilla Firefox\defaults\profile\

    no need of the mozilla.cfg

    ReplyDelete
  17. Thanks Hakka for your input. Much appreciated.

    ReplyDelete
  18. Anonymous4:29 AM

    Hi Hakka,
    your comment about the need of the mozilla.cfg file isn't quite accurate. The mozilla.cfg file is used to lock down settings. They appear greyed out, when you start FF.
    The pref.js is (as its name suggests) a preference file. The settings you put in there are defaults, but can be altered by the user.
    Hope this clarifies this a bit.
    Regards, Nick

    ReplyDelete
  19. Anonymous3:44 AM

    You can use user_pref, wich is default with the possibility to change...
    Or you can use lock_pref, wich is default settings, but greyed out for changes.

    ReplyDelete
  20. Anonymous8:44 PM

    So useful! Thanks a lot :)

    ReplyDelete
  21. Anonymous6:16 AM

    Have a look at Firefox Client Customization Kit (CCK), it allows you to modify all settings in Firefox as an addon. I've been using this to modify user seettings on our build

    ReplyDelete
  22. Hi Piyush,
    Thsi is Balu..
    I am working on Firefox 21.0 msi package.This version is prompting "ProfileMigretion" even "override.ini" file present at INSTALLDIR.and also i want to keep hompage bt user able to change that ondemand. please help me on this.

    Thanks in advance.

    ReplyDelete
  23. can able to virtualiaze mozila firefox usin appv 4.6

    ReplyDelete
  24. Yes you can and I have done it.
    You need to take care of plugins and java install. Either you can install them all in one or create a DSC with these components.

    ReplyDelete