http://bugs.winehq.org/show_bug.cgi?id=2203
--- Comment #32 from fox6x6x6@gmail.com 2013-04-07 06:45:18 CDT --- Forget my last two commments, I figured out the problem. It's all about the ZDrive http://www.dosbox.com/wiki/ZDrive in dosbox. Wine tried to mount his z: drive, but dosbox wouldn't do so and it couldn't execute the program. If you start your program from inside drive c: it is going to work. The following patch mounts wine's z: as y: and now you can start the program from outside the .wine directory too.
@@ -184,12 +184,10 @@ static void start_dosbox( const char *appname, const char *args ) } for (i = 0; i <= 25; i++) if (drives & (1 << i)) - p += sprintf( p, "mount %c %s/dosdevices/%c:\n", 'a' + i == 'z' ? 'y' : 'a' + i, config_dir, 'a' + i ); - p += sprintf( p, "%c:\ncd ", path[0] == 'Z' ? 'Y' : path[0] ); + p += sprintf( p, "mount %c %s/dosdevices/%c:\n", 'a' + i, config_dir, 'a' + i ); + p += sprintf( p, "%c:\ncd ", path[0] ); p += WideCharToMultiByte( CP_UNIXCP, 0, path + 2, -1, p, 4 * strlenW(path), NULL, NULL ) - 1; p += sprintf( p, "\nconfig -securemode\n" ); - if (app[0] == 'Z') - app[0] = 'Y'; p += sprintf( p, "%s %s\n", app, args ); p += sprintf( p, "exit\n" ); if (WriteFile( file, buffer, strlen(buffer), &written, NULL ) && written == strlen(buffer))
But there is another limitation: if you have a directory name longer than 8 characters in the programs path it will fail too. For example if I save Dos Navigator to Y:\home\fabian\Downloads\dn\DN.COM in the temporary dosbox config file it will look like Y:\home\fabian\DOWN~NTG\dn\DN.COM instead of the real DOS path Y:\home\fabian\DOWNLO~1\dn\DN.COM and dosbox will fail to run the program