Comment 31 for bug 1353024

Revision history for this message
In , Damjan Jovanovic (damjan-jov) wrote :

Wine has 2 desktops: the user desktop under C:\users\user\Desktop, and the public desktop under C:\users\Public\Desktop.

Applications that install .lnk files to the public desktop end up putting those files under ~/.wine/drive_c/users/Public/Desktop, from which winemenubuilder generates a .desktop file in ~/Desktop. All is well.

But some applications (eg. WinRAR) want to install .lnk files to the user's desktop, which is ~/.wine/drive_c/users/user/Desktop, but that isn't a directory, it's just a symlink to ~/Desktop. So the .lnk file goes onto the real desktop instead of the hidden one.

The selection of where to save the .lnk happen in shell32's IShellLink's IPersistFile COM interface, before winemenubuilder is launched. By the time winemenubuilder runs, the .lnk file already exists in the wrong place.

It would be possible for winemenubuilder to move or delete the .lnk file after it generates the .desktop file, but then we'd lose track of the .lnk <-> .desktop mapping which winemenubuilder can do in order to delete .desktop files when the corresponding .lnk files are gone (because eg. the application was uninstalled). Some more intelligent Wine desktops <-> ~/Desktop synchronization might be necessary.