http://bugs.winehq.org/show_bug.cgi?id=14786
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net
--- Comment #5 from Anastasius Focht focht@gmx.net 2008-12-30 16:35:09 --- Hello,
that VB app uses Windows Scripting Host objects to carry out some tasks - hence you need to install WSH.
Prerequisites: winetricks vb6run wsh56
It seems that Wine's cmd.exe command line args processing can't cope with double-double quote braindamage, e.g. double quote enclosing double quoted paths (containing spaces).
Spawned process command line from WSH shell object "exec" method:
--- snip --- .. 0046:trace:process:CreateProcessW app (null) cmdline L"C:\windows\system32\cmd.exe /D /C ""C:\Program Files\mkv2vob\tools\mkvinfo.exe" "C:\Program Files\mkv2vob\mewmew-vorbis-ssa.mkv" > "C:\windows\temp\mewmew-vorbis-ssa.dos.txt""" 0046:trace:process:find_exe_file looking for L"C:\windows\system32\cmd.exe" 0046:trace:process:find_exe_file Trying native exe L"C:\windows\system32\cmd.exe" 0046:trace:process:CreateProcessW starting L"C:\windows\system32\cmd.exe" as Win32 binary (0x10000000-0x10042000) 0018:trace:process:init_current_directory starting in L"C:\Program Files\mkv2vob\" 0x1c 0018:trace:process:__wine_kernel_init starting process name=L"C:\windows\system32\cmd.exe" argv[0]=L"C:\windows\system32\cmd.exe" 0046:trace:process:CreateProcessW started process pid 0047 tid 0018 .. --- snip ---
There is a double quote pair enclosing the whole /c command string and one around each path which contains whitespace (like "program files").
Due to use of C runtime argv[], Wine's cmd.exe gets it wrong:
--- snip --- 0018:trace:cmd:wmain Command line parm: 'L"C:\windows\system32\cmd.exe"' 0018:trace:cmd:wmain Command line parm: 'L"/D"' 0018:trace:cmd:wmain Command line parm: 'L"/C"' 0018:trace:cmd:wmain /c command line: 'L"C:\Program "Files\mkv2vob\tools\mkvinfo.exe C:\Program" "Files\mkv2vob\mewmew-vorbis-ssa.mkv > C:\windows\temp\mewmew-vorbis-ssa.dos.txt""' 0018:trace:cmd:WCMD_DumpCommands Parsed line: 0018:trace:cmd:WCMD_DumpCommands L"0012FE00 0 00 00000000 C:\Program "Files\mkv2vob\tools\mkvinfo.exe C:\Program" "Files\mkv2vob\mewmew-vorbis-ssa.mkv > C:\windows\temp\mewmew-vorbis-ssa.dos.txt" Redir:" 0018:trace:cmd:WCMD_process_commands Executing command: 'L"C:\Program "Files\mkv2vob\tools\mkvinfo.exe C:\Program" "Files\mkv2vob\mewmew-vorbis-ssa.mkv > C:\windows\temp\mewmew-vorbis-ssa.dos.txt""' 0018:trace:cmd:WCMD_execute command on entry:L"C:\Program "Files\mkv2vob\tools\mkvinfo.exe C:\Program" "Files\mkv2vob\mewmew-vorbis-ssa.mkv > C:\windows\temp\mewmew-vorbis-ssa.dos.txt"" (0x33f5a0), with '(null)'='(null)' 0018:trace:cmd:WCMD_execute Command: 'L"C:\Program "Files\mkv2vob\tools\mkvinfo.exe C:\Program" "Files\mkv2vob\mewmew-vorbis-ssa.mkv > C:\windows\temp\mewmew-vorbis-ssa.dos.txt""' 0018:trace:cmd:WCMD_execute param1: L":\Program", param2: L"Files\mkv2vob\tools\mkvinfo.exe C:\Program" 0018:trace:cmd:WCMD_run_program Searching in 'L"C:\"' for 'L"Program"' 0018:trace:cmd:WCMD_run_program ASSUMING INTERNAL 0018:trace:process:CreateProcessW app (null) cmdline L"C:\Program "Files\mkv2vob\tools\mkvinfo.exe C:\Program" "Files\mkv2vob\mewmew-vorbis-ssa.mkv > C:\windows\temp\mewmew-vorbis-ssa.dos.txt"" --- snip ---
Quickfix for the user: install and run the program from paths not containing spaces (same applies to output directory).
A solution might be to use GetCommandLineW(), manually applying quoting/dequoting rules and not use C runtime for (initial) argv processing.
Regards