Damjan Jovanovic wrote:
Hi
We have 2 problems in wine:
- When you run "wine /path/to/app.exe", argv[0] is "/path/to/app.exe"
which is definitely wrong. The most serious consequence of this is that apps run through file browser double-clicking can break.
- Whether you run "wine D:\setup.exe" or "wine
/media/cdrom/setup.exe", the current directory is never "D:" and when you double-click an .exe the current directory is $HOME so it's always wrong. You can't "cd /media/cdrom && wine setup.exe" either because that stops ejecting the CD for multi-CD installs.
Can we kill 2 birds with 1 stone here and do something like
if (argv[0] is a unix path) { make argv[0] a windows path SetCurrentDirectory(directory of argv[0]); }
before starting the app? Since Windows never uses UNIX paths this can't break any Windows app, and it will fix double-click startups and multiple CD installs.
First of all there are extensive tests for this in kernel32 process test. Which shows exactly opposite from what you stated here - windows does support use of unix path.
Second, your approach will brake lots of new programs that can not be started from their directory. They can only be started from _outside_ directory they are in with 'start app.exe'.
Vitaliy.