<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-size:small">Hi Dave,<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jan 3, 2022 at 8:42 AM David T. Lewis <<a href="mailto:lewis@mail.msen.com">lewis@mail.msen.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">Hi Jakob,<br>
<br>
On Sun, Jan 02, 2022 at 08:39:29PM +0100, Jakob Reschke wrote:<br>
> Hi Dave,<br>
> <br>
> Happy new year!<br>
> <br>
> Am Sa., 1. Jan. 2022 um 21:46 Uhr schrieb David T. Lewis <<a href="mailto:lewis@mail.msen.com" target="_blank">lewis@mail.msen.com</a>>:<br>
> ><br>
> > For Unix/Linux, the solution can be very simple, just add /usr/share/squeak/<br>
> > and /usr/local/share/squeak/ to the list of locations to be searched<br>
> > for sources files.<br>
> ><br>
> > I suspect (but I'm not sure) that some similar convention will work<br>
> > for Windows.<br>
> ><br>
> <br>
> On Windows you would need additional help from the VM because there is<br>
> no fixed path like /usr/share or /usr/local/share. Most Windows<br>
> installations are on drive C:, but it is possible to spread Windows<br>
> across different partitions. Possible candidates for a non-writable<br>
> system-wide location are %ProgramFiles%\Common Files (usually<br>
> C:\Program Files\Common Files) or, if Squeak were installed like other<br>
> applications, its program directory under %ProgramFiles% (for example<br>
> C:\Program Files\Squeak). If it should be writable by users (or at<br>
> least the one who creates it), we could take %ProgramData% (usually<br>
> C:\ProgramData).<br>
> <br>
> <a href="https://docs.microsoft.com/en-us/windows/win32/shell/knownfolderid" rel="noreferrer" target="_blank">https://docs.microsoft.com/en-us/windows/win32/shell/knownfolderid</a><br>
> <br>
<br>
Thanks, this link makes it much more clear. Indeed, this would be<br>
better be supported by the VM, which has direct access to the Windows<br>
API calls.<br>
<br>
> The most official way to get the folder paths at runtime is to use the<br>
> Windows API, but going via the environment variables should work as<br>
> well. So if the VM does not provide the paths, we would still need at<br>
> least access to environment variables from a VM without separately<br>
> installed plugins.<br>
><br>
<br>
Given that the KNOWNFOLDERID locations are well defined in the API,<br>
I would think that the Windows API would be the better way to handle<br>
it. Perhaps the VM should provide an optional primitive for this,<br>
with the primitive providing a list of one or more locations in<br>
which the sources files might be found. And if the primitive is<br>
not implemented, then don't look there :-)<br></blockquote><div><br></div><div class="gmail_default" style="font-size:small">We have a plugin in the Virtend VM that gives official values for several named directories. I'm happy to move this plugin and/or the primitive into VMMaker. The specification is</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small"> Primitive. Query for a common file location.</div> Arguments:<br> location: String describing the common file location.<br> Return value: The path to the designated location.<br> Known locations:<br> 'home' - the user's home directory<br> 'desktop' - the user's desktop directory<br><br> 'temp' - the temp directory to use<br> 'preferences' - the place to store (per user) app preferences<br> 'applications' - the directory for installing applications<br> 'fonts' - the directory to install fonts in the system<br><br> 'documents' - the users documents folder<br> 'music' - the users default location for music<br> 'pictures' - the users default location for pictures<br> 'videos' - the users default location for videos</div><div><br></div><br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><span style="font-size:small;border-collapse:separate"><div>_,,,^..^,,,_<br></div><div>best, Eliot</div></span></div></div></div></div>