Changes

Firefox ext install downloads

10,108 bytes added, 09:30, 4 May 2010
Firefox 3.6+ and Extension Installation Files
== Firefox 3.6+ and Extension Installation Files ==

Here are the command files listed for [[Firefox#Firefox_Extension_Templates]]. The idea comes from [[http://forums.mozillazine.org/viewtopic.php?f=7&t=1724155] Mozilla Forum Discussion] and the files are adapted from [[http://flabdablet.nfshost.com/windows-scripts/install-extensions.cmd] install_extensions.cmd].

Be sure to

* put 7zip into packages\mozilla\7-Zip\
* adjust the local path (here: C:\NETINST) if needed
* have the right directory tree

My structure for mozilla installations:
<source lang="dos">
packages
packages/mozilla/
packages/mozilla/fx_extensions
packages/mozilla/fx_profile
packages/mozilla/tb_extensions
packages/mozilla/7-zip
</source>

===packages/mozilla/install-extensions.cmd===
<source lang="dos">
:: Mozilla extension installation demo script for Firefox and Thunderbird versions
:: based on Gecko 1.9+ from which the -install-global-extension command line option
:: has been removed. This script must be run from a Windows account with local
:: administrative rights. The extensions it installs can be run immediately by
:: limited users.
::
:: Stephen Thomas <flabdablet (at) gmail.com> 31-Jan-2010
::
:: This is free software. Do whatever you want with it except hold me accountable
:: for the grief it will undoubtedly cause you. If you improve it, I'd like to hear
:: from you.


set mozextn=call :mozextn
set return=goto :eof
set rmdir=rmdir /s /q
:: set xpidir=C:\NETINST
set xpidir=%SOFTWARE%\packages\mozilla\fx_extensions
:: set zip="%ProgramFiles%\7-Zip\7z.exe"
set zip="%SOFTWARE%\packages\mozilla\7-Zip\7z.exe"

:: :: give args on command line
:: Firefox myextension
:: Thunderbird myextension
:: (myextension without .xpi)
%mozextn% %1 %2
%return%



:: Install a Mozilla extension XPI package into a system-wide folder, and add
:: the registry key required to tell the Mozilla app it's there.
::
:: Uses the same root folder for all packages regardless of whether they are
:: intended for Firefox or Thunderbird; this allows both apps to share disk space
:: for any extensions they have in common.
::
:: If there's already a folder in "%ProgramFiles%\Mozilla %appname%\extensions"
:: named for the ID of the extension being installed, or if the registry key
:: already exists and points to a different folder from the new one, the old
:: folders are deleted before the registry key is updated.
::
:: Parameters:
::
:: %1: app name (Firefox or Thunderbird)
:: %2: XPI package name, without trailing .xpi; also used to name the
:: installation folder.
::
:: Returns errorlevel 0 if installation worked, 1 if not.
::
:: Uses a totally unsound hack to extract the package ID from its install.rdf
:: file; will break horribly if the first <em:id> XML tag encountered does not
:: belong to the package ID, or if <em:id>package-id</em:id> is not all on
:: one line. If you'd rather use a proper XML parser instead, be my guest. If
:: it's really easy to do, let me know.

:mozextn
set extnroot=%CommonProgramFiles%\Mozilla Shared\Extensions
if not exist "%extnroot%" mkdir "%extnroot%"
if errorlevel 1 %return%

set extndir=%extnroot%\%2
if exist "%extndir%" %rmdir% "%extndir%"
%zip% x -yo"%extndir%" "%xpidir%\%2.xpi"
if errorlevel 1 %return%

for /f "skip=2 tokens=*" %%L in ('find "<em:id>" "%extndir%\install.rdf"') do @(
set line="%%L"
goto :mozextn1
)

:mozextn1
set id=%line:~8,-9%
if "%id%"=="" (
%rmdir% "%extndir%"
verify error 2>nul
%return%
)

set olddir=%ProgramFiles%\Mozilla %1\extensions\%id%
if exist "%olddir%" %rmdir% "%olddir%"

set key=HKLM\Software\Mozilla\%1\Extensions
for /f "skip=4 tokens=2*" %%A in ('reg query "%key%" /v "%id%"') do set olddir=%%B
if not "%olddir%"=="%extndir%" if exist "%olddir%" %rmdir% "%olddir%"

reg add "%key%" /v "%id%" /d "%extndir%" /f
%return%
</source>


===packages/mozilla/remove-extensions.cmd===
<source lang="dos">
:: Mozilla extension installation demo script for Firefox and Thunderbird versions
:: based on Gecko 1.9+ from which the -install-global-extension command line option
:: has been removed. This script must be run from a Windows account with local
:: administrative rights. The extensions it installs can be run immediately by
:: limited users.
::
:: Falko Trojahn <falko (at) trojahn (dot) de> 01-May-2010
:: adapted from
:: Stephen Thomas <flabdablet (at) gmail.com> 31-Jan-2010
::
:: This is free software. Do whatever you want with it except hold me accountable
:: for the grief it will undoubtedly cause you. If you improve it, I'd like to hear
:: from you.


set mozextn=call :mozextn
set return=goto :eof
set rmdir=rmdir /s /q
:: set xpidir=C:\NETINST
set xpidir=%SOFTWARE%\packages\mozilla\fx_extensions
:: set zip="%ProgramFiles%\7-Zip\7z.exe"
set zip="%SOFTWARE%\packages\mozilla\7-Zip\7z.exe"

:: :: give args on command line
:: Firefox myextension
:: Thunderbird myextension
:: (myextension without .xpi)
%mozextn% %1 %2
%return%



:: Install a Mozilla extension XPI package into a system-wide folder, and add
:: the registry key required to tell the Mozilla app it's there.
::
:: Uses the same root folder for all packages regardless of whether they are
:: intended for Firefox or Thunderbird; this allows both apps to share disk space
:: for any extensions they have in common.
::
:: If there's already a folder in "%ProgramFiles%\Mozilla %appname%\extensions"
:: named for the ID of the extension being installed, or if the registry key
:: already exists and points to a different folder from the new one, the old
:: folders are deleted before the registry key is updated.
::
:: Parameters:
::
:: %1: app name (Firefox or Thunderbird)
:: %2: XPI package name, without trailing .xpi; also used to name the
:: installation folder.
::
:: Returns errorlevel 0 if installation worked, 1 if not.
::
:: Uses a totally unsound hack to extract the package ID from its install.rdf
:: file; will break horribly if the first <em:id> XML tag encountered does not
:: belong to the package ID, or if <em:id>package-id</em:id> is not all on
:: one line. If you'd rather use a proper XML parser instead, be my guest. If
:: it's really easy to do, let me know.

:mozextn
set extnroot=%CommonProgramFiles%\Mozilla Shared\Extensions
if not exist "%extnroot%" mkdir "%extnroot%"
if errorlevel 1 %return%

set extndir=%extnroot%\%2
if exist "%extndir%" %rmdir% "%extndir%"
%zip% x -yo"%extndir%" "%xpidir%\%2.xpi"
if errorlevel 1 %return%

for /f "skip=2 tokens=*" %%L in ('find "<em:id>" "%extndir%\install.rdf"') do @(
set line="%%L"
goto :mozextn1
)

:mozextn1
set id=%line:~8,-9%
if "%id%"=="" (
%rmdir% "%extndir%"
verify error 2>nul
%return%
)

set olddir=%ProgramFiles%\Mozilla %1\extensions\%id%
if exist "%olddir%" %rmdir% "%olddir%"

set key=HKLM\Software\Mozilla\%1\Extensions
for /f "skip=4 tokens=2*" %%A in ('reg query "%key%" /v "%id%"') do set olddir=%%B
if not "%olddir%"=="%extndir%" if exist "%olddir%" %rmdir% "%olddir%"

reg add "%key%" /v "%id%" /d "%extndir%" /f
%return%
</source>

===profiles/firefox36.xml===

To have all needed things at hand, here is a profile file firefox36.xml:

<source lang="xml">
<?xml version="1.0" encoding="UTF-8"?>

<profiles>

<profile id="firefox36">
<package package-id="firefox36" />
<!--
<package package-id="firefox-ext-pdf_download" />
-->
<package package-id="firefox-ext-adblock_plus" />
<package package-id="firefox-ext-bookmarkdd" />
<package package-id="firefox-ext-dict_de-de_hunspell" />
<package package-id="firefox-ext-downthemall" />
<package package-id="firefox-ext-ie_view" />
<package package-id="firefox-ext-screengrab" />
<package package-id="firefox-ext-selection_links" />

</profile>

<profile id="firefox36-dev">
<depends profile-id="firefox36" />
<package package-id="firefox-ext-aardvark" />
<package package-id="firefox-ext-firebug" />
<package package-id="firefox-ext-fireftp" />
<package package-id="firefox-ext-colorzilla" />
<package package-id="firefox-ext-quick_locale_switcher" />
<package package-id="firefox-ext-split_browser" />
<package package-id="firefox-ext-web_developer" />
</profile>

</profiles>
</source>

===packages/firefox36.xml===

<source lang="xml">
<?xml version="1.0" encoding="UTF-8"?>

<packages>
<package
id="firefox-check"
name="Mozilla Firefox 3 installed"
revision="1"
reboot="false"
priority="20">

<check type="file" condition="versiongreaterorequal" path="%programfiles%\mozilla firefox\firefox.exe" value="1.9.1.3642" />
</package>

<package
id="firefox36"
name="Mozilla Firefox 3"
revision="30063"
reboot="false"
priority="99">

<check type="file" condition="versiongreaterorequal" path="%programfiles%\mozilla firefox\firefox.exe" value="1.9.2.3743" />
<install cmd='%SOFTWARE%\tools\pskill.exe firefox.exe'>
<exit code="-1" />
</install>
<install cmd='cmd /c if exist "%programfiles%\mozilla firefox\firefox.exe" move /y "%programfiles%\mozilla firefox" "%programfiles%\mozilla firefox.bak"' >
<exit code="1" />
</install>
<install cmd='"%SOFTWARE%\packages\mozilla\firefox-30063-deu.exe" -ms' />
<install cmd='cmd /c if exist "%programfiles%\mozilla firefox.bak\searchplugins" copy /y "%programfiles%\mozilla firefox.bak\searchplugins\*" "%programfiles%\mozilla firefox\searchplugins\"' >
<exit code="1" />
<exit code="0" />
</install>
<install cmd='"%PROGRAMFILES%\Mozilla Firefox\firefox.exe" -CreateProfile default '>
<exit code="0" />
</install>

<upgrade cmd='%SOFTWARE%\tools\pskill.exe firefox.exe'>
<exit code="-1" />
</upgrade>
<upgrade cmd='"%SOFTWARE%\packages\mozilla\firefox-30063-deu.exe" -ms' />
<remove cmd='%SOFTWARE%\tools\pskill.exe firefox.exe'>
<exit code="-1" />
</remove>
<remove cmd="%PROGRAMFILES%\Mozilla Firefox\uninstall\helper.exe /s" />
</package>

</packages>
</source>

[[category:Silent Installers|Firefox]]
66
edits