<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type='text/xsl' href='http://in-cider.spaces.live.com/mmm2008-07-24_12.50/rsspretty.aspx?rssquery=en-US;http%3a%2f%2fin-cider.spaces.live.com%2fcategory%2fADM%2bXPI%2bFor%2bFirefox%2ffeed.rss' version='1.0'?><rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:msn="http://schemas.microsoft.com/msn/spaces/2005/rss" xmlns:live="http://schemas.microsoft.com/live/spaces/2006/rss" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>In-Cider Knowledge: ADM XPI For Firefox</title><description /><link>http://in-cider.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&amp;_c=BlogPart&amp;partqs=catADM%2bXPI%2bFor%2bFirefox</link><language>en-US</language><pubDate>Tue, 12 Aug 2008 12:29:01 GMT</pubDate><lastBuildDate>Tue, 12 Aug 2008 12:29:01 GMT</lastBuildDate><generator>Microsoft Spaces v1.1</generator><docs>http://www.rssboard.org/rss-specification</docs><ttl>60</ttl><cf:parentRSS>http://in-cider.spaces.live.com/blog/feed.rss</cf:parentRSS><live:type>blogcategory</live:type><live:identity><live:id>2240337725778742866</live:id><live:alias>in-cider</live:alias></live:identity><cf:listinfo><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="typelabel" label="Type" /><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="tag" label="Tag" /><cf:group element="category" label="Category" /><cf:sort element="pubDate" label="Date" data-type="date" default="true" /><cf:sort element="title" label="Title" data-type="string" /><cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" /></cf:listinfo><item><title>Group Policy Extension for Firefox 1.x</title><link>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!351.entry</link><description>&lt;div&gt;Well, after that long weekend article about Firefox, I thought it was about time to put my own money where my motuh is and get back to the stuff that you were reading this blog for in the first place.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;This is to announce another test version of my Group Policy extension for Firefox.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Find it here:  &lt;a href="http://homepages.ed.ac.uk/mcs/GPOforFirefox.zip"&gt;http://homepages.ed.ac.uk/mcs/GPOforFirefox.zip&lt;/a&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Major differences on previous versions is this one works in 1.5.x (oi, who was that saying &amp;quot;FINALLY!&amp;quot;...).  I've also renamed the extension from the slightly acronym-crazed ADM XPI to Group Policy Extension for Firefox.  Thirdly, I've totally changed the locations in the registry that Administrative Templates are read from.  Its now use these registry locations: HKLM\Software\Policies\ADM\Firefox, HKLM\Software\Policies\ADM\Firefox\Locked, and the same place under HKCU.  Email me at &amp;quot;mark dot sammons at ed.ac.uk&amp;quot; for more info if needed.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Only weird thing I've found with this release is if you copy the XPI file to the extensions folder in Program Files\Mozilla Firefox, it will try to keep installing itself.  Best way to install is to close Firefox and then double click on the XPI file.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Consider this still a technology proof of concept, but can be used if you are repackaging Firefox to an MSI.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;I'd still love to find the time to really pull Firefox apart and see if I can write this in as a patch, especially since the code is actually quite easy.&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2240337725778742866&amp;page=RSS%3a+Group+Policy+Extension+for+Firefox+1.x&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=in-cider.spaces.live.com&amp;amp;GT1=in-cider"&gt;</description><comments>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!351.entry#comment</comments><guid isPermaLink="true">http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!351.entry</guid><pubDate>Mon, 19 Jun 2006 23:19:57 GMT</pubDate><slash:comments>11</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://in-cider.spaces.live.com/blog/cns!1F17474AB1F2CE52!351/comments/feed.rss</wfw:commentRss><wfw:comment>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!351.entry#comment</wfw:comment><dcterms:modified>2007-10-08T18:30:11Z</dcterms:modified></item><item><title>Firefox ADM XPI Test 2 Release</title><link>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!330.entry</link><description>&lt;div&gt;As the subject says.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;This version is a further test version of this extension for Firefox 1.5 only.  The functionality has now been brought up to the same level as the ADM XPI for Thunderbird.  Full features:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;every preference settable - just use same registry name as preference you are trying to set
&lt;li&gt;4 levels of granularity of control - preference set on a per user config, preference set on a per computer config, preference set and locked on a per user config &amp;amp; preference set and locked on a per computer config - override in that order (eg.  if you set browser.startup.homepage to &lt;a href="http://www.ed.ac.uk"&gt;http://www.ed.ac.uk&lt;/a&gt; on a per computer config, but then if browser.startup.homepage is set and locked to &lt;a href="http://news.bbc.co.uk"&gt;http://news.bbc.co.uk&lt;/a&gt; on a per user config, then the resulting value will be &lt;a href="http://news.bbc.co.uk"&gt;http://news.bbc.co.uk&lt;/a&gt; and locked for that user)
&lt;li&gt;ability to use environment variable in settings, and special variable %homesharehomepath% for %homeshare%%homepath% environment
&lt;li&gt;settings on per-session basis.  So, for example, if you remotely attached to a machine and changed the browser.startup.homepage value in the registry, the home page will be changed the next time the user launches Firefox 1.5.&lt;/ul&gt;
&lt;p&gt; 
&lt;p&gt;More later!  Here's the link to the extension:  &lt;a href="http://homepages.ed.ac.uk/mcs/admxpi_test2.zip"&gt;http://homepages.ed.ac.uk/mcs/admxpi_test2.zip&lt;/a&gt;  (server is sometimes flakey at the moment, so if rejects you or says cannot find the page, just refresh)&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2240337725778742866&amp;page=RSS%3a+Firefox+ADM+XPI+Test+2+Release&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=in-cider.spaces.live.com&amp;amp;GT1=in-cider"&gt;</description><comments>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!330.entry#comment</comments><guid isPermaLink="true">http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!330.entry</guid><pubDate>Thu, 08 Dec 2005 22:28:42 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://in-cider.spaces.live.com/blog/cns!1F17474AB1F2CE52!330/comments/feed.rss</wfw:commentRss><wfw:comment>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!330.entry#comment</wfw:comment><dcterms:modified>2005-12-08T22:28:42Z</dcterms:modified></item><item><title>Go!</title><link>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!317.entry</link><description>&lt;div&gt;Beta 1 of Firefox 1.5 was released today so some extra tidbits on ADM XPI for Firefox 1.5&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;To install:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;-  copy the admxpi.xpi to C:\Program Files\Mozilla Firefox\extensions&lt;/div&gt;
&lt;div&gt;-  Run Firefox 1.5.  It will say there is an untrusted extension that need to be installed.  Click Yes (I'll make the XPI installation smoother, honest!).&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;That's it!&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;To test its working:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;-  Open up regedit and go to &amp;quot;HKEY_LOCAL_MACHINE\Software\Policies&amp;quot;&lt;/div&gt;
&lt;div&gt;-  Right click on the &amp;quot;Policies&amp;quot; key and New...Key.  Name the key &amp;quot;Firefox.XPI&amp;quot;&lt;/div&gt;
&lt;div&gt;-  Right click on the newly created &amp;quot;Firefox.XPI&amp;quot; key and New...Key.  Name the key &amp;quot;Locked&amp;quot;&lt;/div&gt;
&lt;div&gt;-  Right click on the newly created &amp;quot;Locked&amp;quot; key and New...String Value.  Name the string value &amp;quot;browser.startup.homepage&amp;quot;.  Give it a value of &lt;a href="http://news.bbc.co.uk"&gt;http://news.bbc.co.uk&lt;/a&gt; (or your own URL).&lt;/div&gt;
&lt;div&gt;-  Load Firefox 1.5&lt;/div&gt;
&lt;div&gt;-  Click on the Home icon.  It should go to the address above.&lt;/div&gt;
&lt;div&gt;-  Go to Tools, Options menu.  In the General tab, the homepage icon should be set to the address above and should be greyed out and uneditable.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Some other tidbits:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;-  At the moment, this supports String values only in the registry.  As such, when doing Admin templates, do not use the NUMERIC keyword, even when putting in numbers (eg  do not use VALUEON NUMERIC 12, just use VALUEON 12).&lt;/div&gt;
&lt;div&gt;-  When manually editing the registry to input values, do not use DWORD or Binary values.  Numbers should just be put in Strings values.&lt;/div&gt;
&lt;div&gt;-  Values:   Boolean values are 1 for True and 0 for False.  Numeric and String are just as you want them to be in Firefox.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;More later.&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2240337725778742866&amp;page=RSS%3a+Go!&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=in-cider.spaces.live.com&amp;amp;GT1=in-cider"&gt;</description><comments>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!317.entry#comment</comments><guid isPermaLink="true">http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!317.entry</guid><pubDate>Fri, 09 Sep 2005 16:42:21 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://in-cider.spaces.live.com/blog/cns!1F17474AB1F2CE52!317/comments/feed.rss</wfw:commentRss><wfw:comment>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!317.entry#comment</wfw:comment><dcterms:modified>2005-09-09T16:42:21Z</dcterms:modified></item><item><title>Beyond the Tease</title><link>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!316.entry</link><description>&lt;div&gt;OK, so the last post was a bit of a tease on something I have been working on.  I had hoped to post the follow-up sooner, but things have been a bit bad and I'm very disillusioned after the last few days at work.  By the way, any recruiters from Google, Microsoft, IBM, Yahoo, etc watching, I'm the man you're after!!  &lt;img src="/rte/emoticons/smile_tongue.gif"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Anyway, what is this thing I mentioned?&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Back in May I had a crazed weekend of trying to write an extension from scratch.  And it worked great, but I never really took it anywhere.  About two months ago, I was emailed by Michael Kaply.  He works at IBM on Mozilla and emailed me because he was starting up the Client Customisation Kit wizard project (&lt;a href="http://www.mozilla.org/projects/cck/firefox/"&gt;http://www.mozilla.org/projects/cck/firefox/&lt;/a&gt;).  This got me thinking about how I would use an extension for doing the Active Directory/ZenWorks stuff.  Thanks to a few gems of guidance from Michael, I quickly managed to get somewhere.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;The result:  ADM XPI for Firefox 1.5.  And I'm a bit chuffed with it!&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Feature wise, I looked at FirefoxADM, the feedback I had on FirefoxADM, the feedback on Bugzilla for the Group Policy enhancement bug (&lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=267888"&gt;https://bugzilla.mozilla.org/show_bug.cgi?id=267888&lt;/a&gt;) and some intuition as an admin.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Feature wise, let's start with the Admin Template.  Note, there isn't a perscribed one!  I'll certainly try and do a few and maybe even a wizard thing that creates them, but that a secondary project.  Here's an example:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;strong&gt;CLASS USER&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;CATEGORY &amp;quot;Mozilla Firefox XPI Settings&amp;quot;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;KEYNAME &amp;quot;Software\Policies\Firefox.XPI&amp;quot;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;POLICY &amp;quot;General Settings&amp;quot;&lt;br&gt;PART &amp;quot;Homepage&amp;quot; EDITTEXT REQUIRED&lt;br&gt;VALUENAME browser.startup.homepage&lt;br&gt;END PART&lt;br&gt;END POLICY&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;END CATEGORY&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;This lets you set the homepage as an per-user overwritable preference.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Here's another example:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;p&gt;&lt;strong&gt;CLASS MACHINE&lt;/strong&gt;
&lt;p&gt;&lt;strong&gt;CATEGORY &amp;quot;Mozilla Firefox XPI Settings&amp;quot;&lt;/strong&gt;
&lt;p&gt;&lt;strong&gt;KEYNAME &amp;quot;Software\Policies\Firefox.XPI\Locked&amp;quot;&lt;/strong&gt;
&lt;p&gt;&lt;strong&gt;POLICY &amp;quot;General Settings&amp;quot;&lt;br&gt;PART &amp;quot;Homepage&amp;quot; EDITTEXT REQUIRED&lt;br&gt;VALUENAME browser.startup.homepage&lt;br&gt;END PART&lt;br&gt;END POLICY&lt;/strong&gt;
&lt;p&gt;&lt;strong&gt;END CATEGORY&lt;/strong&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;This let's you set the homepage as a locked per-computer preference.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;ADM XPI only really cares about 3 of the lines in those example above:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;strong&gt;CLASS USER&lt;/strong&gt; - per user setting, &lt;strong&gt;CLASS MACHINE&lt;/strong&gt; - per machine setting&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;KEYNAME &amp;quot;Software\Policies\Firefox.XPI&amp;quot;&lt;/strong&gt; - default, overwritable preference, &lt;strong&gt;KEYNAME &amp;quot;Software\Policies\Firefox.XPI\Locked&amp;quot;&lt;/strong&gt; - locked preference&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;VALUENAME&lt;/strong&gt; - whatever valuename is set to, is the preference in Firefox it is setting.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;This gives you 4 different ways to set any preference in Firefox.  However, it goes further than this.  If you find in the AD that you have more than 1 of these ways set for any preferences, the system has a fixed hierarchy:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Per User Preference&lt;/div&gt;
&lt;div&gt;Per Machine Preference&lt;/div&gt;
&lt;div&gt;Per User Locked Preference&lt;/div&gt;
&lt;div&gt;Per Machine Locked Preference&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;So, take that example of the 2 admin templates above that both set the homepage.  Let's say both are set to different pages and applied to the same machine.  The Per Computer Locked Setting will &amp;quot;win&amp;quot; because of the preference hierarchy I have defined in ADM XPI (by the way, a lot of people get confused about user settings applied to computers - this of course all depends on whether you have loopback enabled, but let's not go into that murky area at the moment!).&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Why this whole area is really good for Firefox 1.5, is that (a) the extension deployment is a lot cleaner and (b) Firefox 1.5 contains the code necessary to do this extension!&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Another great thing that comes out of this is that there are no logon or startup scripts or anything.  As long as the extension is installed, and this can be installed on the machine so it cannot be removed, it applies the settings when Firefox is launched.  This leads onto another fiendish thing - this means you can live update machines remotely.  As long as you can remotely connect to a machine's registry, you can put in settings that will be there immediately on the next run of Firefox, and the user doesn't have to log out or anything!&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Please test and give feedback to mark(dot)sammons(at)ed.ac.uk:  &lt;a href="http://homepages.ed.ac.uk/mcs/admxpi_test1.zip"&gt;http://homepages.ed.ac.uk/mcs/admxpi_test1.zip&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Thanks&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2240337725778742866&amp;page=RSS%3a+Beyond+the+Tease&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=in-cider.spaces.live.com&amp;amp;GT1=in-cider"&gt;</description><comments>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!316.entry#comment</comments><guid isPermaLink="true">http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!316.entry</guid><pubDate>Wed, 07 Sep 2005 22:52:19 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://in-cider.spaces.live.com/blog/cns!1F17474AB1F2CE52!316/comments/feed.rss</wfw:commentRss><wfw:comment>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!316.entry#comment</wfw:comment><dcterms:modified>2005-09-07T22:52:19Z</dcterms:modified></item><item><title>ADM XPI for Firefox 1.5</title><link>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!315.entry</link><description>&lt;div&gt;This may still be a while away (latest roadmap points to a release date deep in November...OUCH!), but I have been contemplating certain things regards the next version of Firefox, 1.5 (codenamed Deer Park).&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Most significantly, I noticed features-wise, it offered a couple of tantalising tidbits for extension developers.  As such, over the last weekend and few days I have been working on something for it.  Back in mid-May, I spent a weekend messing about with extensions and the like and came up with a very rough extension for Firefox.  Well, for Firefox 1.5, I went back to that, rewrote it properly, sorted out the coding and also added in a couple of special bits.  I now have a pretty cool working version, so I'm going to start releasing test versions in the next couple of days.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;What is it?&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Makes Firefox 1.5 fully Active Directory configurable
&lt;li&gt;Install the extension onto any install of Firefox (be it a Mozilla MSI, custom MSI or even manual install) and that's all the setting up you need - extension installation code in Firefox 1.5 allows scriptable installation of extensions on remote machines
&lt;li&gt;Just need to write an Admin Template where the VALUENAMEs are the same as the pref's inside Firefox, and it will set those values
&lt;li&gt;4 levels of granularity:  User set default, computer set default, user locked setting, computer locked setting - override each other in that order as well
&lt;li&gt;Live updating.  Changing the pref on a machine in the registry and then restarting Firefox will immediately cause that setting to be effected.&lt;/ul&gt;
&lt;p&gt; 
&lt;p&gt;I am going to test it and then in the next couple of days start to release test versions.  I should point out that this does not mean FirefoxADM will end.  There are features in FirefoxADM that go way beyond the prefs level of Firefox and so, it will still be needed by many who use it.
&lt;p&gt; 
&lt;p&gt;I've also been talking to Michael Kaply from IBM who recently resurrected the Client Customisation Kit project for Firefox.  I'm hoping that maybe this tool and the CCK can come together to add extra levels of customisability for people who need it.
&lt;p&gt; 
&lt;p&gt;Anyway, more details in the next post.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2240337725778742866&amp;page=RSS%3a+ADM+XPI+for+Firefox+1.5&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=in-cider.spaces.live.com&amp;amp;GT1=in-cider"&gt;</description><comments>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!315.entry#comment</comments><guid isPermaLink="true">http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!315.entry</guid><pubDate>Fri, 02 Sep 2005 01:03:20 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://in-cider.spaces.live.com/blog/cns!1F17474AB1F2CE52!315/comments/feed.rss</wfw:commentRss><wfw:comment>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!315.entry#comment</wfw:comment><dcterms:modified>2005-09-02T01:03:20Z</dcterms:modified></item><item><title>Cannot.  Stop.  Posting...</title><link>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!216.entry</link><description>&lt;p&gt;OK, this is the last one for today.  It wont make any sense unless you have read from way down there at &amp;quot;Adventures in XPI - Part 1&amp;quot;! &lt;p&gt;  &lt;p&gt;If this all works, then there is scope to do the following in that PrefSet function: &lt;p&gt;  &lt;p&gt;&lt;strong&gt;function PrefSet(prefName,setType)&lt;br&gt;{&lt;/strong&gt; &lt;p&gt;&lt;strong&gt; try {&lt;br&gt;  var FirefoxSetter = reg.getRegistryEntry(2,&amp;quot;Software\\Policies\\Firefox\\Default&amp;quot;,prefName);&lt;br&gt;  if(setType==&amp;quot;char&amp;quot;)&lt;br&gt;  {&lt;br&gt;   prefs.setCharPref(prefName, FirefoxSetter);&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;  }&lt;br&gt;  if(setType==&amp;quot;int&amp;quot;)&lt;br&gt;  {&lt;br&gt;   prefs.setIntPref(prefName, FirefoxSetter);&lt;br&gt;  }&lt;br&gt;  if(setType==&amp;quot;bool&amp;quot;)&lt;br&gt;  {&lt;br&gt;   prefs.setBoolPref(prefName, FirefoxSetter);&lt;br&gt;  }&lt;br&gt;  } catch (ex) {}&lt;/strong&gt; &lt;p&gt;&lt;strong&gt; try {&lt;br&gt;  var FirefoxSetter = reg.getRegistryEntry(3,&amp;quot;Software\\Policies\\Firefox\\Default&amp;quot;,prefName);&lt;br&gt;  if(setType==&amp;quot;char&amp;quot;)&lt;br&gt;  {&lt;br&gt;   prefs.setCharPref(prefName, FirefoxSetter);&lt;br&gt;  }&lt;br&gt;  if(setType==&amp;quot;int&amp;quot;)&lt;br&gt;  {&lt;br&gt;   prefs.setIntPref(prefName, FirefoxSetter);&lt;br&gt;  }&lt;br&gt;  if(setType==&amp;quot;bool&amp;quot;)&lt;br&gt;  {&lt;br&gt;   prefs.setBoolPref(prefName, FirefoxSetter);&lt;br&gt;  }&lt;br&gt;  } catch (ex) {}&lt;/strong&gt; &lt;p&gt;&lt;br&gt;&lt;strong&gt; try {&lt;br&gt;  var FirefoxSetter = reg.getRegistryEntry(2,&amp;quot;Software\\Policies\\Firefox\\Locked&amp;quot;,prefName);&lt;br&gt;  if(setType==&amp;quot;char&amp;quot;)&lt;br&gt;  {&lt;br&gt;   prefs.lockPref(prefName);&lt;br&gt;   prefs.setCharPref(prefName, FirefoxSetter);&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;  }&lt;br&gt;  if(setType==&amp;quot;int&amp;quot;)&lt;br&gt;  {&lt;br&gt;   prefs.lockPref(prefName);&lt;br&gt;   prefs.setIntPref(prefName, FirefoxSetter);&lt;br&gt;  }&lt;br&gt;  if(setType==&amp;quot;bool&amp;quot;)&lt;br&gt;  {&lt;br&gt;   prefs.lockPref(prefName);&lt;br&gt;   prefs.setBoolPref(prefName, FirefoxSetter);&lt;br&gt;  }&lt;br&gt;  } catch (ex) {}&lt;/strong&gt; &lt;p&gt;&lt;strong&gt; try {&lt;br&gt;  var FirefoxSetter = reg.getRegistryEntry(3,&amp;quot;Software\\Policies\\Firefox\\Locked&amp;quot;,prefName);&lt;br&gt;  if(setType==&amp;quot;char&amp;quot;)&lt;br&gt;  {&lt;br&gt;   prefs.lockPref(prefName);&lt;br&gt;   prefs.setCharPref(prefName, FirefoxSetter);&lt;br&gt;  }&lt;br&gt;  if(setType==&amp;quot;int&amp;quot;)&lt;br&gt;  {&lt;br&gt;   prefs.lockPref(prefName);&lt;br&gt;   prefs.setIntPref(prefName, FirefoxSetter);&lt;br&gt;  }&lt;br&gt;  if(setType==&amp;quot;bool&amp;quot;)&lt;br&gt;  {&lt;br&gt;   prefs.lockPref(prefName);&lt;br&gt;   prefs.setBoolPref(prefName, FirefoxSetter);&lt;br&gt;  }&lt;br&gt;  } catch (ex) {}&lt;br&gt;}&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;  &lt;p&gt;...as in, for any setting, try in this order: &lt;ol&gt; &lt;li&gt;User - Default &lt;li&gt;Computer - Default &lt;li&gt;User - Locked &lt;li&gt;Computer - Locked&lt;/ol&gt; &lt;p&gt;  &lt;p&gt;This is very untested and I'll look into it tomorrow as well as seeing if I can fix a couple of problems with FirefoxADM/ADM for Firefox.  There's a crap issue with upgrades and an issue with the new cookie handler (I'm actually not sure how, but a then statement has gone a tad AWOL).  Unless disaster, I'll get that out by the end of play tomorrow. &lt;p&gt;  &lt;p&gt;Its likely that ADM For Firefox 1.0 wont be released until about the start of June because I am going to get a much-needed break away from everything and computers for a week and a half.  So need to get things as settled as possible by Wednesday. &lt;p&gt;  &lt;p&gt;But until tomorrow, adieu!&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2240337725778742866&amp;page=RSS%3a+Cannot.++Stop.++Posting...&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=in-cider.spaces.live.com&amp;amp;GT1=in-cider"&gt;</description><comments>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!216.entry#comment</comments><guid isPermaLink="true">http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!216.entry</guid><pubDate>Sun, 15 May 2005 22:58:54 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://in-cider.spaces.live.com/blog/cns!1F17474AB1F2CE52!216/comments/feed.rss</wfw:commentRss><wfw:comment>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!216.entry#comment</wfw:comment><dcterms:modified>2005-05-15T23:04:05Z</dcterms:modified></item><item><title>And to lock...</title><link>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!215.entry</link><description>&lt;p&gt;Just figured it out!  Here's how you lock the settings: &lt;p&gt; &lt;font size=2&gt; &lt;p&gt;&lt;strong&gt;function PrefSet(prefName,setType)&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;{&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;try {&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;var FirefoxSetter = reg.getRegistryEntry(2,&amp;quot;Software\\Policies\\Firefox.XPI&amp;quot;,prefName);&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;if(setType==&amp;quot;char&amp;quot;)&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;{&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;prefs.lockPref(prefName);&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;prefs.setCharPref(prefName, FirefoxSetter);&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;}&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;if(setType==&amp;quot;int&amp;quot;)&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;{&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;prefs.lockPref(prefName);&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;prefs.setIntPref(prefName, FirefoxSetter);&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;}&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;if(setType==&amp;quot;bool&amp;quot;)&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;{&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;prefs.lockPref(prefName);&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;prefs.setBoolPref(prefName, FirefoxSetter);&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;}&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;} catch (ex) {}&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;try {&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;var FirefoxSetter = reg.getRegistryEntry(3,&amp;quot;Software\\Policies\\Firefox.XPI&amp;quot;,prefName);&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;if(setType==&amp;quot;char&amp;quot;)&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;{&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;prefs.lockPref(prefName);&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;prefs.setCharPref(prefName, FirefoxSetter);&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;}&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;if(setType==&amp;quot;int&amp;quot;)&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;{&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;prefs.lockPref(prefName);&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;prefs.setIntPref(prefName, FirefoxSetter);&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;}&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;if(setType==&amp;quot;bool&amp;quot;)&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;{&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;prefs.lockPref(prefName);&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;prefs.setBoolPref(prefName, FirefoxSetter);&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;}&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;} catch (ex) {}&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;}&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;  &lt;p&gt;Damn, its looking a whole lot more powerful than FirefoxADM, already!  That wasn't meant to happen. &lt;p&gt;  &lt;p&gt;By the way, the name of this is, as the topic gives away &amp;quot;ADM XPI For Firefox&amp;quot;.  Hope someone can find a use for it...&lt;/font&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2240337725778742866&amp;page=RSS%3a+And+to+lock...&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=in-cider.spaces.live.com&amp;amp;GT1=in-cider"&gt;</description><comments>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!215.entry#comment</comments><guid isPermaLink="true">http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!215.entry</guid><pubDate>Sun, 15 May 2005 22:28:08 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://in-cider.spaces.live.com/blog/cns!1F17474AB1F2CE52!215/comments/feed.rss</wfw:commentRss><wfw:comment>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!215.entry#comment</wfw:comment><dcterms:modified>2005-05-15T22:28:08Z</dcterms:modified></item><item><title>Adventures in XPI - Prologue</title><link>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!214.entry</link><description>&lt;p align=left&gt;OK, I've uploaded those.  Questions and criticisms to mark(dot)sammons(at)ed.ac.uk. &lt;p align=left&gt;I should point out that I am very new to this myself so may have made a few massive mistake in it all and it is very much a work in progress that I have only experimented with, and SHOULD NOT BE DEPLOYED to a production environment. &lt;p align=left&gt;Oh, and as ever, this work is Public Domain. &lt;p align=left&gt;&lt;br&gt;Get it here: &lt;p align=left&gt;&lt;a href="http://homepages.ed.ac.uk/mcs/ADMXPI_0.1.zip"&gt;http://homepages.ed.ac.uk/mcs/ADMXPI_0.1.zip&lt;/a&gt;&lt;br&gt;(the main all-encompassing one!) &lt;p align=left&gt;and, the files I used in experimenting: &lt;p align=left&gt;&lt;a href="http://homepages.ed.ac.uk/mcs/ADMXPI_Experiments.zip"&gt;http://homepages.ed.ac.uk/mcs/ADMXPI_Experiments.zip&lt;/a&gt; &lt;p align=left&gt;&lt;br&gt;Thanks...&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2240337725778742866&amp;page=RSS%3a+Adventures+in+XPI+-+Prologue&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=in-cider.spaces.live.com&amp;amp;GT1=in-cider"&gt;</description><comments>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!214.entry#comment</comments><guid isPermaLink="true">http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!214.entry</guid><pubDate>Sun, 15 May 2005 19:12:00 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://in-cider.spaces.live.com/blog/cns!1F17474AB1F2CE52!214/comments/feed.rss</wfw:commentRss><wfw:comment>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!214.entry#comment</wfw:comment><dcterms:modified>2005-05-15T19:12:00Z</dcterms:modified></item><item><title>Adventures in XPI - Part 5</title><link>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!213.entry</link><description>&lt;p&gt;You write your own ADM template for applying settings.  Here's the example: &lt;p&gt;  &lt;p&gt;&lt;strong&gt;CLASS USER&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;CATEGORY &amp;quot;Mozilla Firefox XPI Settings&amp;quot;&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;KEYNAME &amp;quot;Software\Policies\Firefox.XPI&amp;quot;&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;POLICY &amp;quot;General Settings&amp;quot;&lt;br&gt;PART &amp;quot;Homepage&amp;quot; EDITTEXT REQUIRED&lt;br&gt;VALUENAME browser.startup.homepage&lt;br&gt;END PART&lt;br&gt;END POLICY&lt;/strong&gt; &lt;p&gt;&lt;br&gt;&lt;strong&gt;END CATEGORY&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;  &lt;p&gt;&lt;br&gt;&lt;strong&gt;CLASS MACHINE&lt;/strong&gt; &lt;p&gt;&lt;br&gt;&lt;strong&gt;CATEGORY &amp;quot;Mozilla Firefox XPI Settings&amp;quot;&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;KEYNAME &amp;quot;Software\Policies\Firefox.XPI&amp;quot;&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;POLICY &amp;quot;General Settings&amp;quot;&lt;br&gt;PART &amp;quot;Homepage&amp;quot; EDITTEXT REQUIRED&lt;br&gt;VALUENAME browser.startup.homepage&lt;br&gt;END PART&lt;br&gt;END POLICY&lt;/strong&gt; &lt;p&gt;&lt;br&gt;&lt;strong&gt;END CATEGORY&lt;/strong&gt; &lt;p&gt;&lt;br&gt;Everything is identical between the machine and user part, apart from the CLASS type, so you can easily C&amp;amp;P between the two. &lt;p&gt;But if I wanted this to be completely extensible, what would I need to do?  Either scan the registry key and then apply whatever is in there (the preferable solution - and one I am trying to achieve).  Or... &lt;p&gt;&lt;a href="http://homepages.ed.ac.uk/mcs/admxpi.txt"&gt;http://homepages.ed.ac.uk/mcs/admxpi.txt&lt;/a&gt; &lt;p&gt;(BTW, purely coincidentally, that only looks like a text file in Firefox, as IE tries to render it!)&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2240337725778742866&amp;page=RSS%3a+Adventures+in+XPI+-+Part+5&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=in-cider.spaces.live.com&amp;amp;GT1=in-cider"&gt;</description><comments>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!213.entry#comment</comments><guid isPermaLink="true">http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!213.entry</guid><pubDate>Sun, 15 May 2005 19:00:09 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://in-cider.spaces.live.com/blog/cns!1F17474AB1F2CE52!213/comments/feed.rss</wfw:commentRss><wfw:comment>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!213.entry#comment</wfw:comment><dcterms:modified>2005-05-15T19:00:09Z</dcterms:modified></item><item><title>Adventures in XPI - Part 4</title><link>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!212.entry</link><description>&lt;p&gt;At this point, I decided to do things a little differently and not go down the whole FirefoxADM route. &lt;p&gt;That owes a lot to the translation stage in the code and I wanted this to be lighter.  As such, I decided to make everything a whole lot more generic. &lt;p&gt;What this would entail is making the entry in the registry exactly the same as the final pref.  As such, if you want to write a template to change a certain pref, just code that into the ADM template, not have to write the translator in the code. &lt;p&gt;The XUL became this: &lt;p&gt;&lt;br&gt;&lt;strong&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;&amp;lt;overlay id=&amp;quot;admxpiOverlay&amp;quot; &lt;br&gt;    xmlns=&amp;quot;&lt;/strong&gt;&lt;a href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt;&lt;strong&gt;http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&amp;quot;&amp;gt;&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;&amp;lt;script type=&amp;quot;application/x-javascript&amp;quot;&amp;gt; &lt;br&gt;var reg = Components.classes[&amp;quot;@mozilla.org/browser/shell-service;1&amp;quot;].&lt;br&gt;                    getService(Components.interfaces.nsIWindowsShellService);&lt;br&gt;                    &lt;br&gt;var prefs = Components.classes[&amp;quot;@mozilla.org/preferences-service;1&amp;quot;].&lt;br&gt;                    getService(Components.interfaces.nsIPrefBranch);&lt;/strong&gt; &lt;p&gt;&lt;br&gt;&lt;strong&gt;PrefSet(&amp;quot;browser.startup.homepage&amp;quot;,&amp;quot;char&amp;quot;);&lt;/strong&gt; &lt;p&gt;&lt;br&gt;&lt;strong&gt;function PrefSet(prefName,setType)&lt;br&gt;{&lt;br&gt; try {&lt;br&gt;  var FirefoxSetter = reg.getRegistryEntry(2,&amp;quot;Software\\Policies\\Firefox.XPI&amp;quot;,prefName);&lt;br&gt;  if(setType==&amp;quot;char&amp;quot;)&lt;br&gt;  {&lt;br&gt;   prefs.setCharPref(prefName, FirefoxSetter);&lt;br&gt;  }&lt;br&gt;  if(setType==&amp;quot;int&amp;quot;)&lt;br&gt;  {&lt;br&gt;   prefs.setIntPref(prefName, FirefoxSetter);&lt;br&gt;  }&lt;br&gt;  if(setType==&amp;quot;bool&amp;quot;)&lt;br&gt;  {&lt;br&gt;   prefs.setBoolPref(prefName, FirefoxSetter);&lt;br&gt;  }&lt;br&gt;  } catch (ex) {}&lt;/strong&gt; &lt;p&gt;&lt;strong&gt; try {&lt;br&gt;  var FirefoxSetter = reg.getRegistryEntry(3,&amp;quot;Software\\Policies\\Firefox.XPI&amp;quot;,prefName);&lt;br&gt;  if(setType==&amp;quot;char&amp;quot;)&lt;br&gt;  {&lt;br&gt;   prefs.setCharPref(prefName, FirefoxSetter);&lt;br&gt;  }&lt;br&gt;  if(setType==&amp;quot;int&amp;quot;)&lt;br&gt;  {&lt;br&gt;   prefs.setIntPref(prefName, FirefoxSetter);&lt;br&gt;  }&lt;br&gt;  if(setType==&amp;quot;bool&amp;quot;)&lt;br&gt;  {&lt;br&gt;   prefs.setBoolPref(prefName, FirefoxSetter);&lt;br&gt;  }&lt;br&gt;  } catch (ex) {}&lt;br&gt;}&lt;br&gt; &lt;/strong&gt; &lt;p&gt;&lt;strong&gt;&amp;lt;/script&amp;gt; &lt;/strong&gt; &lt;p&gt;&lt;br&gt;&lt;strong&gt;&amp;lt;/overlay&amp;gt;&lt;/strong&gt; &lt;p&gt;&lt;br&gt;So, same interfaces (but note, now ADMXPI branded!).  However, the functionality becomes a call of: &lt;p&gt;PrefSet(&amp;quot;browser.startup.homepage&amp;quot;,&amp;quot;char&amp;quot;); &lt;p&gt;which passes the setting name and setting type (&amp;quot;char&amp;quot;, &amp;quot;int or &amp;quot;bool&amp;quot; for Char, Integer or Boolean) to the function PrefSet.  PrefSet tries to first read from the Current User registry for the preference name from Software\Policies\Firefox.XPI and set accordingly, and then from the Local Machine registry.  This gives a notion of Machine policies override User policies.  Maybe right, maybe wrong, we can come back to that. &lt;p&gt;And this works (on my local machine, no AD testing yet!). &lt;p&gt;So... &lt;p&gt;take that one major step further and implement all the settings from FirefoxADM Login... &lt;p&gt;&lt;strong&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;&amp;lt;overlay id=&amp;quot;admxpiOverlay&amp;quot; &lt;br&gt;    xmlns=&amp;quot;&lt;/strong&gt;&lt;a href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt;&lt;strong&gt;http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&amp;quot;&amp;gt;&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;&amp;lt;script type=&amp;quot;application/x-javascript&amp;quot;&amp;gt; &lt;br&gt;var reg = Components.classes[&amp;quot;@mozilla.org/browser/shell-service;1&amp;quot;].&lt;br&gt;                    getService(Components.interfaces.nsIWindowsShellService);&lt;br&gt;                    &lt;br&gt;var prefs = Components.classes[&amp;quot;@mozilla.org/preferences-service;1&amp;quot;].&lt;br&gt;                    getService(Components.interfaces.nsIPrefBranch);&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;PrefSet(&amp;quot;accessibility.browsewithcaret&amp;quot;,&amp;quot;bool&amp;quot;);&lt;br&gt;PrefSet(&amp;quot;accessibility.typeaheadfind&amp;quot;,&amp;quot;bool&amp;quot;);&lt;br&gt;PrefSet(&amp;quot;browser.cache.disk.capacity&amp;quot;,&amp;quot;int&amp;quot;);&lt;br&gt;PrefSet(&amp;quot;browser.cache.disk.parent_directory&amp;quot;,&amp;quot;char&amp;quot;);&lt;br&gt;PrefSet(&amp;quot;browser.download.defaultFolder&amp;quot;,&amp;quot;char&amp;quot;);&lt;br&gt;PrefSet(&amp;quot;browser.download.dir&amp;quot;,&amp;quot;char&amp;quot;);&lt;br&gt;PrefSet(&amp;quot;browser.enable_automatic_image_resizing&amp;quot;,&amp;quot;bool&amp;quot;);&lt;br&gt;PrefSet(&amp;quot;browser.shell.checkDefaultBrowser&amp;quot;,&amp;quot;bool&amp;quot;);&lt;br&gt;PrefSet(&amp;quot;browser.startup.homepage&amp;quot;,&amp;quot;char&amp;quot;);&lt;br&gt;PrefSet(&amp;quot;network.proxy.autoconfig_url&amp;quot;,&amp;quot;char&amp;quot;);&lt;br&gt;PrefSet(&amp;quot;network.proxy.ftp&amp;quot;,&amp;quot;char&amp;quot;);&lt;br&gt;PrefSet(&amp;quot;network.proxy.ftp_port&amp;quot;,&amp;quot;int&amp;quot;);&lt;br&gt;PrefSet(&amp;quot;network.proxy.gopher&amp;quot;,&amp;quot;char&amp;quot;);&lt;br&gt;PrefSet(&amp;quot;network.proxy.gopher_port&amp;quot;,&amp;quot;int&amp;quot;);&lt;br&gt;PrefSet(&amp;quot;network.proxy.http&amp;quot;,&amp;quot;char&amp;quot;);&lt;br&gt;PrefSet(&amp;quot;network.proxy.http_port&amp;quot;,&amp;quot;int&amp;quot;);&lt;br&gt;PrefSet(&amp;quot;network.proxy.no_proxies_on&amp;quot;,&amp;quot;char&amp;quot;);&lt;br&gt;PrefSet(&amp;quot;network.proxy.socks&amp;quot;,&amp;quot;char&amp;quot;);&lt;br&gt;PrefSet(&amp;quot;network.proxy.socks_port&amp;quot;,&amp;quot;int&amp;quot;);&lt;br&gt;PrefSet(&amp;quot;network.proxy.socks_version&amp;quot;,&amp;quot;int&amp;quot;);&lt;br&gt;PrefSet(&amp;quot;network.proxy.ssl&amp;quot;,&amp;quot;char&amp;quot;);&lt;br&gt;PrefSet(&amp;quot;network.proxy.ssl_port&amp;quot;,&amp;quot;int&amp;quot;);&lt;br&gt;PrefSet(&amp;quot;network.proxy.type&amp;quot;,&amp;quot;int&amp;quot;);&lt;br&gt;PrefSet(&amp;quot;xpinstall.dialog.confirm&amp;quot;,&amp;quot;char&amp;quot;);&lt;br&gt;PrefSet(&amp;quot;xpinstall.dialog.progress.chrome&amp;quot;,&amp;quot;char&amp;quot;);&lt;br&gt;PrefSet(&amp;quot;xpinstall.dialog.progress.skin&amp;quot;,&amp;quot;char&amp;quot;);&lt;br&gt;PrefSet(&amp;quot;xpinstall.dialog.progress.type.chrome&amp;quot;,&amp;quot;char&amp;quot;);&lt;br&gt;PrefSet(&amp;quot;xpinstall.dialog.progress.type.skin&amp;quot;,&amp;quot;char&amp;quot;);&lt;br&gt;PrefSet(&amp;quot;xpinstall.enabled&amp;quot;,&amp;quot;bool&amp;quot;);&lt;/strong&gt; &lt;p&gt;&lt;br&gt;&lt;strong&gt;function PrefSet(prefName,setType)&lt;br&gt;{&lt;br&gt; try {&lt;br&gt;  var FirefoxSetter = reg.getRegistryEntry(2,&amp;quot;Software\\Policies\\Firefox.XPI&amp;quot;,prefName);&lt;br&gt;  if(setType==&amp;quot;char&amp;quot;)&lt;br&gt;  {&lt;br&gt;   prefs.setCharPref(prefName, FirefoxSetter);&lt;br&gt;  }&lt;br&gt;  if(setType==&amp;quot;int&amp;quot;)&lt;br&gt;  {&lt;br&gt;   prefs.setIntPref(prefName, FirefoxSetter);&lt;br&gt;  }&lt;br&gt;  if(setType==&amp;quot;bool&amp;quot;)&lt;br&gt;  {&lt;br&gt;   prefs.setBoolPref(prefName, FirefoxSetter);&lt;br&gt;  }&lt;br&gt;  } catch (ex) {}&lt;/strong&gt; &lt;p&gt;&lt;strong&gt; try {&lt;br&gt;  var FirefoxSetter = reg.getRegistryEntry(3,&amp;quot;Software\\Policies\\Firefox.XPI&amp;quot;,prefName);&lt;br&gt;  if(setType==&amp;quot;char&amp;quot;)&lt;br&gt;  {&lt;br&gt;   prefs.setCharPref(prefName, FirefoxSetter);&lt;br&gt;  }&lt;br&gt;  if(setType==&amp;quot;int&amp;quot;)&lt;br&gt;  {&lt;br&gt;   prefs.setIntPref(prefName, FirefoxSetter);&lt;br&gt;  }&lt;br&gt;  if(setType==&amp;quot;bool&amp;quot;)&lt;br&gt;  {&lt;br&gt;   prefs.setBoolPref(prefName, FirefoxSetter);&lt;br&gt;  }&lt;br&gt;  } catch (ex) {}&lt;br&gt;}&lt;br&gt; &lt;/strong&gt; &lt;p&gt;&lt;strong&gt;&amp;lt;/script&amp;gt; &lt;/strong&gt; &lt;p&gt;&lt;br&gt;&lt;strong&gt;&amp;lt;/overlay&amp;gt;&lt;/strong&gt; &lt;p&gt;  &lt;p&gt;Which of course, leads me to...&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2240337725778742866&amp;page=RSS%3a+Adventures+in+XPI+-+Part+4&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=in-cider.spaces.live.com&amp;amp;GT1=in-cider"&gt;</description><comments>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!212.entry#comment</comments><guid isPermaLink="true">http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!212.entry</guid><pubDate>Sun, 15 May 2005 18:40:41 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://in-cider.spaces.live.com/blog/cns!1F17474AB1F2CE52!212/comments/feed.rss</wfw:commentRss><wfw:comment>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!212.entry#comment</wfw:comment><dcterms:modified>2005-05-15T18:42:50Z</dcterms:modified></item><item><title>Adventures in XPI - Part 3</title><link>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!211.entry</link><description>&lt;p&gt;Coding to the interface that Firefox gives extension writers should be easy, right?  After all, there's endless amounts of documentation and if that fails, there's that wonderful thing called the Internet to look things up on.  Yeah, sure! &lt;p&gt;Its been a living nightmare!  OK, maybe not that bad, but still: Not fun. &lt;p&gt;I managed to find the methods of setting Prefs pretty easily, but drawing settings from the registry almost killed the whole idea.  I've spent two nights this week taking different angle and different ways of attacking this.  Nothing worked and you are literally shooting in the dark.  There seems to be this feeling that if you have an open source product, you don't need to write documentation!  But I've leave that opinion there, so the terms &amp;quot;pot&amp;quot; &amp;quot;kettle&amp;quot; and &amp;quot;black&amp;quot; don't get sent to me... &lt;p&gt;Then, I found this:  &lt;a href="http://xl8.net/blog/archive/2004/08/09/1002.aspx"&gt;http://xl8.net/blog/archive/2004/08/09/1002.aspx&lt;/a&gt; &lt;p&gt;The Holy Grail. &lt;p&gt;I was then able to put this XUL file together: &lt;p&gt;&lt;br&gt;&lt;strong&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;&amp;lt;overlay id=&amp;quot;helloworldOverlay&amp;quot; &lt;br&gt;    xmlns=&amp;quot;&lt;/strong&gt;&lt;a href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt;&lt;strong&gt;http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&amp;quot;&amp;gt;&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;&amp;lt;script type=&amp;quot;application/x-javascript&amp;quot;&amp;gt; &lt;br&gt;var reg = Components.classes[&amp;quot;@mozilla.org/browser/shell-service;1&amp;quot;].&lt;br&gt;                    getService(Components.interfaces.nsIWindowsShellService);&lt;br&gt;                    &lt;br&gt;var prefs = Components.classes[&amp;quot;@mozilla.org/preferences-service;1&amp;quot;].&lt;br&gt;                    getService(Components.interfaces.nsIPrefBranch);&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;try {                    &lt;br&gt; var FirefoxHomepage = reg.getRegistryEntry(3,&amp;quot;Software\\Policies\\Firefox&amp;quot;,&amp;quot;FirefoxHomepage&amp;quot;);&lt;br&gt; prefs.setCharPref(&amp;quot;browser.startup.homepage&amp;quot;, FirefoxHomepage);&lt;br&gt;} catch (ex) {}&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;&amp;lt;/script&amp;gt; &lt;/strong&gt; &lt;p&gt;&lt;br&gt;&lt;strong&gt;&amp;lt;/overlay&amp;gt;&lt;/strong&gt; &lt;p&gt;&lt;br&gt;Notice it still owes a lot to the HelloWorld example! &lt;p&gt;Everything in it is still from the HelloWorld except for the script section.  In that it opens up a couple of interfaces to use - the ones I've been hunting for so endlessly over the past few days, and then wrapped in a &amp;quot;try, catch&amp;quot; error-handler, reads from the same registry entries as FirefoxADM and sets a String pref for browser.startup.homepage. &lt;p&gt;And it works!  So what next?&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2240337725778742866&amp;page=RSS%3a+Adventures+in+XPI+-+Part+3&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=in-cider.spaces.live.com&amp;amp;GT1=in-cider"&gt;</description><comments>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!211.entry#comment</comments><guid isPermaLink="true">http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!211.entry</guid><pubDate>Sun, 15 May 2005 18:20:05 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://in-cider.spaces.live.com/blog/cns!1F17474AB1F2CE52!211/comments/feed.rss</wfw:commentRss><wfw:comment>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!211.entry#comment</wfw:comment><dcterms:modified>2005-05-15T18:20:05Z</dcterms:modified></item><item><title>Adventures in XPI - Part 2</title><link>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!210.entry</link><description>&lt;p&gt;When you start off with XPIs, things get very confusing very quickly.  The reason?  Take this explanation of a XPI: &lt;p&gt;&amp;quot;A XPI is a ZIP file containing a chrome folder and a install.rdf file.  The RDF file contains XML which describes the installation of the package.  Inside the chrome folder is a JAR file, which is a ZIP file.  Inside the JAR file, there is a content folder which contains a content.rdf file which is an XML file and a XUL file.  The XUL file contains XML which actually does the workhorse behaviour.&amp;quot; &lt;p&gt;&lt;br&gt;Phew, the what does what now?  And jeez, too many X's! &lt;p&gt;For the above reasons and the fact I am just getting to grips with all this, this ain't going to be a tutorial!  Please go to XUL Planet and the Hello World example (&lt;a href="http://www.orablogs.com/duffblog/archives/000536.html"&gt;http://www.orablogs.com/duffblog/archives/000536.html&lt;/a&gt;).  See this more of a description of my experiences! &lt;p&gt;I started off with that Hello World example and started to basically alter it from the inside out.  My first Technology Test was done by just changing the XUL file.  It would become obvious that virtually all of my changes would be within this file. &lt;p&gt;It was surprising simple to get to grips with, especially once I discovered how to embed script into the XUL file using the &amp;lt;script type=&amp;quot;application\x-javascript&amp;quot;&amp;gt; XML tag. &lt;p&gt;The next thing to decide was a plan for the general algorightm.  It seemed as we were still performing the same sort of actions as FirefoxADM, this algorithm can be carried over. &lt;p&gt;As such, we start with registry keys, translate them and then plug it into Firefox. &lt;p&gt;The only problem is, whereas with FirefoxADM, this was done by altering Firefox's input files, by the time this XPI executes, we were inside Firefox and couldn't do it the same way.  I had to plug the settings in via Firefox's API. &lt;p&gt;Sounds easy, eh?!&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2240337725778742866&amp;page=RSS%3a+Adventures+in+XPI+-+Part+2&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=in-cider.spaces.live.com&amp;amp;GT1=in-cider"&gt;</description><comments>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!210.entry#comment</comments><guid isPermaLink="true">http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!210.entry</guid><pubDate>Sun, 15 May 2005 17:43:49 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://in-cider.spaces.live.com/blog/cns!1F17474AB1F2CE52!210/comments/feed.rss</wfw:commentRss><wfw:comment>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!210.entry#comment</wfw:comment><dcterms:modified>2005-05-15T17:43:49Z</dcterms:modified></item><item><title>Adventures in XPI - Part 1</title><link>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!209.entry</link><description>&lt;p&gt;I've been wondering about the possibilities of XPIs and &amp;quot;ADM for Firefox&amp;quot; for a while now.  Last week, I finally sat down and had a play. &lt;p&gt;But why? &lt;p&gt;Well, basically, its one level less of abstraction between ADM For Firefox and Firefox.  At the moment, the scripts manipulate the prefs before they are pushed into Firefox.  The aim of doing this experimenting is to see if I can manipulate the preferences in Firefox.  However, ultimately, unless this goes all too well, I don't mean for this to be a replacement of ADM For Firefox, so on top of the reasons above, I'm going it because its fun to try things out! &lt;p&gt;Oh well, let's start...&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2240337725778742866&amp;page=RSS%3a+Adventures+in+XPI+-+Part+1&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=in-cider.spaces.live.com&amp;amp;GT1=in-cider"&gt;</description><comments>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!209.entry#comment</comments><guid isPermaLink="true">http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!209.entry</guid><pubDate>Sun, 15 May 2005 16:02:58 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://in-cider.spaces.live.com/blog/cns!1F17474AB1F2CE52!209/comments/feed.rss</wfw:commentRss><wfw:comment>http://in-cider.spaces.live.com/Blog/cns!1F17474AB1F2CE52!209.entry#comment</wfw:comment><dcterms:modified>2005-05-15T16:06:32Z</dcterms:modified></item></channel></rss>