Eryk Sun <eryk...@gmail.com> added the comment:

> Okay, testing more thoroughly on 3.5, symlinks are fine from the 
> console but not via Explorer.

I gave up on using EXE symlinks with Explorer and ShellExecute[Ex]. The shell 
handles symlinks like shortcuts instead of leaving it up to the file system. In 
Windows 7, I recall it was thoroughly broken. Symlinks wouldn't even execute. 
In Windows 10 it's broken in many cases because of the shortcut-like behavior.

I think I know why they're doing this, but I think the fix belongs at a lower 
level in the system runtime library and loader. It's to accommodate the 
importance of the application directory. People expect a symlink to an 
executable to work like a shortcut. In Unix this often just works because most 
libraries are installed to the system, and an application's private shared 
libraries can use "$ORIGIN" in the binary's RPATH (or RUNPATH), which refers to 
the resolved (final) executable directory. In contrast, Windows doesn't use the 
resolved executable path for the application directory. IMO, they could use a 
pair of application directories at the start of the search path -- the link's 
directory and then the resolved executable's directory (or the DLL directory 
when loading a DLL). Some resources do get resolved like this already. For 
example, when searching for a "<local name>\<exename>.mui" language resource, 
in Process Monitor we see that it will first try the unresolved application d
 irectory (e.g. "C:\Temp\en-US\notepad.exe.mui") and then the resolved path 
(e.g. "C:\Windows\en-US\notepad.exe.mui").

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue35854>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to