Stephan Bergmann wrote:
Hennes Rohling wrote:
Stephan Bergmann wrote:
[...]

I was talking from the consumer's point of view: If a consumer wants to find out the location of the default URE in that consumer's context, it will query HKEY_CLASSES_ROOT/Software/OpenOffice.org/URE. That either internally redirects to HKEY_CURRENT_USER (in case the consumer's context has a per-user URE override) or HKEY_LOCAL_MACHINE. That's my understanding of Windows registry at least.


The typical Windows "consumer" does not change registry keys directly without some kind of front end ;-) But if he does he mostly know the differences of the root keys. Furthermore HKEY_CLASSES_ROOT is just a view not a real key. Reading from that key results in the effective data for the current user but the results of writing to that key depends on whether there are two similar keys in the two registry trees and whether the user has access right to write to HKEY_LOCAL_MACHINE...things become a little bit confusing.

A good example how registry keys should be used for retrieving the path of a runtime environment from the registry is Java.

- Assuming that OOo-wo-URE does know where the URE is located, how can executables and DLLs in OOo-wo-URE access the DLLs in URE they depend on? Extend the PATH? DLL hooks Hennes is currently working on (would that scale)?


Extending the PATH will only work if OOo isn't implicitly linked against URE or if OOo uses a wrapper that extends the path so OOo can inherit it.

What do you mean with "implicitly linked?"

Using DLL hooks will scale as long as both OOo and URE are build with DELAYLOAD DLL hoos.

Why do the URE DLLs need delayload hooks, too?


Because otherwise the DLL hooks won't scale. If f.e. sc680mi.dll from OOo is linked against cppu3.dll which is linked against sal3.dll and cppu3.dll and sal3.dll resides in an URE directory different from OOo's directory then sc680mi.dll will find cppu3.dll but sal3.dll will not be found as only sc680mi.dll comes with a delay load stub that may override the runtime linker search path.

What I meant with "implicit" was using osl_loadModule or LoadLibrary. Otherwise you will always need some kind of stub or wrapper because you can't get rid of the console on windows OS when using some kind of script (BAT, CMD) to set the PATH.

- Are there any clever places to set the URE_BOOTSTRAP deployment variable so that all executables in the "interface of OOo" are guaranteed to have it set (for themselves and any other processes they spawn, i.e., ideally as an environment variable)? The last resort would be to make sure that next to each such executable named foo there is a foo.ini that contains a definition for URE_BOOTSTRAP.


What Kay wrote is correct. Registry keys have a global context not bound to an installation location. They may be bound to a version.

So, they are not useful to store information private to one specific application installation, right?

If the application installation does does not come with a version number exclusive for that installation - No.

If the information should be private to the installation it should reside inside the installation. If the information is private to a certain version of an application the registry is a good place.

I don't exactly understand what the goal of the approach is. Assuming there are two installations of the same application (I'm talking about OOo) you might run into trouble beside the issue of finding the installation private URE anyway. F.e. the pipe name used to pass arguments to an already running office currently consist of (version+user path+user id) but not the install path (All platforms, not only Windows).

- Hennes

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to