[fpc-devel] GetAppConfigFile implementation
Michael Van Canneyt
michael at freepascal.org
Sat Dec 20 12:48:22 CET 2008
On Sat, 20 Dec 2008, Vincent Snijders wrote:
> Felipe Monteiro de Carvalho schreef:
> > Hello,
> > GetAppConfigFile in win32 uses CSIDL_LOCAL_APPDATA to be implemented.
> > I did some research, and I think that CSIDL_APPDATA is a better choice:
> > http://blogs.msdn.com/oldnewthing/archive/2005/07/01/434647.aspx
> > They are very similar, but the LOCAL version is a bit more specifc,
> > and the non-LOCAL has the advantage of a lower requirement. It
> > requires shell 4.0 while the other requires shell 5.0
> > Careful that both are for local settings, the name just isn't very
> > intuitive.
> I thought that local version is not stored on the network and is not available
> in the roaming profile. Putting a 100 MB Lazarus exe in the CSIDL_APPDATA is
> not a good thing, it ruins startup time (and shutdown time to copy the 100 MB
> to the network). So, if this change is made, I will probably put windows
> specific code in Lazarus to prevent that.
I specially chose local because I don't want it to be roaming data.
I don't intend to change the implementation, if only for backward
compatibility: suddenly all config files would no longer be found.
And frankly, with each new version of Windows, there are new folders and
rules, so we can keep playing catch-up.
That aside, I think we should maybe create a unit 'osfolders' or so
which creates a cross-platform interface to retrieve 'special' folders
in a cross-platform way, using some enumerated type. I have made this
once for Delphi, to hide the ugly windows API in something more Pascal-ish.
Extending it to work on Unices as well should not be too hard.
I'll put it on my todo list.
More information about the fpc-devel