mozilla

Compare Revisions

Using nsIDirectoryService

Change Revisions

Revision 477361:

Revision 477361 by kscarfone on

Revision 483717:

Revision 483717 by kscarfone on

Title:
Using nsIDirectoryService
Using nsIDirectoryService
Slug:
Using_nsIDirectoryService
Using_nsIDirectoryService
Tags:
"Extensions", "NeedsMarkupWork", "XPCOM", "Guide"
"Extensions", "XPCOM", "NeedsMarkupWork", "Guide"
Content:

Revision 477361
Revision 483717
n23      First, you must know what the string key (or property) is tn23      First, you must know what the string key (or property) is t
>hat refers to this locations. Header files containing known keys >hat refers to this locations. Header files containing known keys 
>are listed in the <a href="#Known_Locations">Known Locations</a> >are listed in the <a href="#Known_Locations">Known Locations</a> 
>section of this document. Bear in mind, that this list is not sta>section of this document. Bear in mind that this list is not stat
>tic. Components can add and remove locations at their will.>ic. Components can add and remove locations at their will.
n131      If Mozilla's Components directory is not in the same directn131      If Mozilla's Components directory is not in the same direct
>ory as your process, you will need to set the /bin directory as d>ory as your process, you will need to set the /bin directory as d
>escribed above. In this case you will also need to tell the syste>escribed above. In this case you will also need to tell the syste
>m of the location of DLLs which are linked against. This aspect o>m of the location of DLLs that are linked against. This aspect of
>f file location is not related to {{ Interface("nsIDirectoryServi> file location is not related to {{ Interface("nsIDirectoryServic
>ce") }}, but needs mention here.>e") }}, but needs mention here.
n134      On the Macintosh, these DLLs are the shared libs in the "Esn134      On the Macintosh, these DLLs are the shared libs in the "Es
>sential Files" directory. You need to include an alias in your ap>sential Files" directory. You need to include an alias in your ap
>plication which points to this directory and the resource ID of t>plication that points to this directory and the resource ID of th
>his alias goes into your 'cfrg' resource.>is alias goes into your 'cfrg' resource.
n146      The first group listed is for locations that are relative tn146      The first group listed is for locations that are relative t
>o the application. For instance, the name and location of the chr>o the application: for instance, the name and location of the chr
>ome folder, or the default location of user profiles. The {{ Inte>ome folder, or the default location of user profiles. The {{ Inte
>rface("nsIDirectoryServiceProvider") }} which normally provides t>rface("nsIDirectoryServiceProvider") }} which normally provides t
>hese locations is at <a class="external" href="http://lxr.mozilla>hese locations is at <a class="external" href="http://lxr.mozilla
>.org/seamonkey/source/xpcom/io/">mozilla/xpcom/io/</a>. This prov>.org/seamonkey/source/xpcom/io/">mozilla/xpcom/io/</a>. This prov
>ider is installed by SeaMonkey after initializing XPCOM. It is al>ider is installed by SeaMonkey after initializing XPCOM. It is al
>so installed by default by NS_InitEmbedding.>so installed by default by NS_InitEmbedding.
n149      The second group listed is for locations which are relativen149      The second group listed is for locations which are relative
> to the current user profile. In SeaMonkey, the profile service i> to the current user profile. In SeaMonkey, the profile service i
>s an {{ Interface("nsIDirectoryServiceProvider") }} and it provid>s an {{ Interface("nsIDirectoryServiceProvider") }} and it provid
>es these locations. There are some cases in embedding in which di>es these locations. There are some cases in embedding in which di
>stinct user profiles are not needed, however prefs and history an>stinct user profiles are not needed; howeverprefs and history a
>d such are needed. In this case, the {{ Interface("nsIDirectorySe>nd such are needed. In this case, the {{ Interface("nsIDirectoryS
>rviceProvider") }} implementation at <a class="external" href="ht>erviceProvider") }} implementation at <a class="external" href="h
>tp://lxr.mozilla.org/seamonkey/source/profile/dirserviceprovider/>ttp://lxr.mozilla.org/seamonkey/source/profile/dirserviceprovider
>">mozilla/profile/dirserviceprovider/</a> can be used. If it is u>/">mozilla/profile/dirserviceprovider/</a> can be used. If it is 
>sed, it is used <em>instead</em> of the profile service, thus sav>used, it is used <em>instead</em> of the profile service, thus sa
>ing some footprint.>ving some footprint.
t155      Although you can change locations one at a time by using tht155      Although you can change locations one at a time by using th
>e {{ Interface("nsIProperties") }} interface of nsDirectoryServic>e {{ Interface("nsIProperties") }} interface of nsDirectoryServic
>e, you can also install your own {{ Interface("nsIDirectoryServic>e, you can also install your own {{ Interface("nsIDirectoryServic
>eProvider") }} to control them en masse. To do this for applicati>eProvider") }} to control them en masse. To do this for applicati
>on-level locations, create a provider based on appfilelocprovider>on-level locations, create a provider based on appfilelocprovider
>. This object has to implement the {{ Interface("nsISupports") }}>. This object has to implement the {{ Interface("nsISupports") }}
> and {{ Interface("nsIDirectoryServiceProvider") }} interfaces. I> and {{ Interface("nsIDirectoryServiceProvider") }} interfaces. I
>t does not need to be a component - it can be a static lib, a sou>t does not need to be a component - it can be a static lib, a sou
>rce file in your project - whatever. Just construct it, pass it t>rce file in your project - whatever. Just construct it, pass it t
>o NS_InitEmbedding and it will be installed. If you are not using>o NS_InitEmbedding, and it will be installed. If you are not usin
> NS_InitEmbedding, you will have to construct it and register it >g NS_InitEmbedding, you will have to construct it and register it
>yourself using {{ Interface-method("nsIDirectoryService", "regist> yourself using {{ Interface-method("nsIDirectoryService", "regis
>erProvider") }}. If you are registering it yourself it is very im>terProvider") }}. If you are registering it yourself it is very i
>portant to register it <strong>immediately</strong> after calling>mportant to register it <strong>immediately</strong> after callin
> NS_InitXPCOM. There are things in the startup process that need >g NS_InitXPCOM. There are things in the startup process that need
>these locations at a very early point - even before registering c> these locations at a very early point - even before registering 
>omponents.>components.

Back to History