canmove, Confirmed users
1,570
edits
| Line 44: | Line 44: | ||
Install locations have priorities. If the same add-on (as determined by ID) appears in multiple install locations then the actual instance used is the one in the install location with the highest priority. | Install locations have priorities. If the same add-on (as determined by ID) appears in multiple install locations then the actual instance used is the one in the install location with the highest priority. | ||
The install locations vary between platform, and since custom locations can be registered potentially by application too, however the normal platforms see 4 (OSX) or 5 standard install locations. | |||
In general whenever the working set of add-ons changes (either through install, upgrade, enable, disable or uninstall) then the application must be restarted to ensure chrome and components are loaded/unloaded from the relevant add-ons. The main exception to this is for themes which aren't the currently used theme. The procedure followed is to mark the changes necessary in the startup cache and then after restart perform the necessary operations and then restart the process again to bring the changes into effect. | In general whenever the working set of add-ons changes (either through install, upgrade, enable, disable or uninstall) then the application must be restarted to ensure chrome and components are loaded/unloaded from the relevant add-ons. The main exception to this is for themes which aren't the currently used theme. The procedure followed is to mark the changes necessary in the startup cache and then after restart perform the necessary operations and then restart the process again to bring the changes into effect. | ||
==Platform Interactions== | ==Platform Interactions== | ||
The XUL platform interacts with the extension manager during startup to allow any pending operations to complete and so to update the working set of add-ons. More specifically the following sequence occurs during a startup: | |||
# nsAppRunner selects the profile for this run of the application and dispatches profile-after-change to the EM | |||
# This initialises the EM, loads registered install locations and necessary settings from the preferences. | |||
# nsAppRunner checks the command line for -install-global-extension and -install-global-extension, if either are present it calls the EM to install the items into the application install location. | |||
# If the application version has changed since the last run with the current profile then nsAppRunner calls <code>checkForMismatches</code> so the EM can perform any necessary migration and check whether any items should be enabled or disabled due to the application version change. | |||
# nsAppRunner calls <code>start</code> for the EM to perform any pending operations. Depending on the result of this startup will either continue or a restart will be performed. | |||
==XPInstall Interactions== | ==XPInstall Interactions== | ||