https://bugs.winehq.org/show_bug.cgi?id=36646
Bug ID: 36646 Summary: Windows 7 USB/DVD download tool installer fails, reporting 'Can't recognize 'Wudt.msi' as an internal or external command, or batch script' Product: Wine Version: 1.7.19 Hardware: x86 OS: Linux Status: NEW Severity: normal Priority: P2 Component: cmd Assignee: wine-bugs@winehq.org Reporter: focht@gmx.net
Hello folks,
the bootstrapper 'Windows7-USB-DVD-tool.exe' unpacks an .msi and .cmd file.
Content of 'setup.cmd':
--- snip --- @ECHO OFF Wudt.msi ECHO ON --- snip ---
It expects the command processor to figure out the actual program to run with -> 'msiexec -i <filename>' which fails to do so.
Relevant part of trace log:
--- snip --- $ WINEDEBUG=+tid,+seh,+relay wine ./Windows7-USB-DVD-tool.exe >>log.txt 2>&1 ... 002a:Call KERNEL32.CreateProcessA(00000000,0013ae80 "C:\users\focht\Temp\IXP000.TMP\setup.cmd",00000000,00000000,00000000,00000020,00000000,00000000,0033fad8,0033f8a0) ret=01005018 ... 002c:Call KERNEL32.__wine_kernel_init() ret=7bc5a4b2 002a:Ret KERNEL32.CreateProcessA() retval=00000001 ret=01005018 002a:Call KERNEL32.WaitForSingleObject(00000068,ffffffff) ret=0100502e ... 002c:Starting process L"C:\windows\system32\cmd.exe" (entryproc=0x7ed061d4) ... 002c:trace:cmd:wmain Full commandline 'L"C:\windows\system32\cmd.exe /c C:\users\focht\Temp\IXP000.TMP\setup.cmd"' 002c:trace:cmd:wmain Command line parm: 'L"/c C:\users\focht\Temp\IXP000.TMP\setup.cmd"' ... 002c:trace:cmd:WCMD_run_program Running 'L"Wudt.msi"' (0) ... 002c:trace:cmd:WCMD_run_program Found as L"C:\users\focht\Temp\IXP000.TMP\Wudt.msi" ... 002c:Call shell32.FindExecutableW(00329964 L"C:\users\focht\Temp\IXP000.TMP\Wudt.msi",00000000,0033203c) ret=7ed020d6 002c:Call advapi32.RegOpenKeyExW(80000002,00327964 L"Software\Microsoft\Windows\CurrentVersion\App Paths\C:\users\focht\Temp\IXP000.TMP\Wudt.msi",00000000,00020019,00328164) ret=7eb1952d 002c:Ret advapi32.RegOpenKeyExW() retval=00000002 ret=7eb1952d 002c:Call KERNEL32.SearchPathW(00000000,00329964 L"C:\users\focht\Temp\IXP000.TMP\Wudt.msi",7eb4d076 L".exe",00000100,003281b0,00000000) ret=7eb19928 002c:Ret KERNEL32.SearchPathW() retval=00000027 ret=7eb19928 002c:Call KERNEL32.GetFileAttributesW(003281b0 L"C:\users\focht\Temp\IXP000.TMP\Wudt.msi") ret=7eb19a2b 002c:Ret KERNEL32.GetFileAttributesW() retval=00000020 ret=7eb19a2b 002c:Call KERNEL32.GetProfileStringW(7eb4d89c L"windows",7eb4d8ac L"programs",7eb4d8c0 L"exe pif bat cmd com",003283b0,00000100) ret=7eb19bdd 002c:Ret KERNEL32.GetProfileStringW() retval=00000013 ret=7eb19bdd 002c:Call user32.CharLowerW(003283b0 L"exe pif bat cmd com") ret=7eb19bf6 002c:Ret user32.CharLowerW() retval=003283b0 ret=7eb19bf6 002c:Call advapi32.RegQueryValueW(80000000,003281f6 L".msi",00328db4,00328db0) ret=7eb19d39 002c:Ret advapi32.RegQueryValueW() retval=00000000 ret=7eb19d39 002c:Call advapi32.RegOpenKeyExW(80000000,00328db4 L"Msi.Package",00000000,02000000,0032816c) ret=7eb1964c 002c:Ret advapi32.RegOpenKeyExW() retval=00000000 ret=7eb1964c 002c:Call advapi32.RegCloseKey(00000044) ret=7eb1969a 002c:Ret advapi32.RegCloseKey() retval=00000000 ret=7eb1969a 002c:Call advapi32.RegQueryValueW(80000000,00328db4 L"Msi.Package\shell\open\command",003285b0,00328190) ret=7eb196fd 002c:Ret advapi32.RegQueryValueW() retval=00000000 ret=7eb196fd 002c:Call KERNEL32.SearchPathW(00000000,003281b0 L"C:\users\focht\Temp\IXP000.TMP\Wudt.msi",7eb4d076 L".exe",00000400,00327918,00000000) ret=7eb1897d 002c:Ret KERNEL32.SearchPathW() retval=00000027 ret=7eb1897d 002c:Ret shell32.FindExecutableW() retval=00000021 ret=7ed020d6 ... 002c:Call shell32.SHGetFileInfoW(0033203c,00000000,00329b6c,000002b4,00002000) ret=7ed0211d 002c:Call shlwapi.PathIsRelativeW(0033203c L"msiexec") ret=7eadee1f 002c:Ret shlwapi.PathIsRelativeW() retval=00000001 ret=7eadee1f 002c:Call KERNEL32.GetCurrentDirectoryW(00000104,003295c4) ret=7eadee3c 002c:Ret KERNEL32.GetCurrentDirectoryW() retval=0000001e ret=7eadee3c 002c:Call shlwapi.PathCombineW(003293bc,003295c4 L"C:\users\focht\Temp\IXP000.TMP",0033203c L"msiexec") ret=7eadee5d 002c:Ret shlwapi.PathCombineW() retval=003293bc ret=7eadee5d 002c:Call KERNEL32.GetBinaryTypeW(003293bc L"C:\users\focht\Temp\IXP000.TMP\msiexec",00329134) ret=7eade91b 002c:Ret KERNEL32.GetBinaryTypeW() retval=00000000 ret=7eade91b 002c:Ret shell32.SHGetFileInfoW() retval=00000000 ret=7ed0211d 002c:Call KERNEL32.GetStartupInfoW(00329888) ret=7ed018dd 002c:Ret KERNEL32.GetStartupInfoW() retval=00000011 ret=7ed018dd 002c:Call KERNEL32.CreateProcessW(00329964 L"C:\users\focht\Temp\IXP000.TMP\Wudt.msi",00137ad0 L"Wudt.msi",00000000,00000000,00000001,00000000,00000000,00000000,00329920,00329e24) ret=7ed021b2 002c:Ret KERNEL32.CreateProcessW() retval=00000000 ret=7ed021b2 ... Can't recognize 'Wudt.msi' as an internal or external command, or batch script. --- snip ---
Source: http://source.winehq.org/git/wine.git/blob/0f2bed51bdd73676406e908eb105dde1e...
--- snip --- 1038 void WCMD_run_program (WCHAR *command, BOOL called) 1039 { ... 1170 /* Once found, launch it */ 1171 if (found) { 1172 STARTUPINFOW st; 1173 PROCESS_INFORMATION pe; 1174 SHFILEINFOW psfi; 1175 DWORD console; 1176 HINSTANCE hinst; ... 1192 /* thisDir contains the file to be launched, but with what? 1193 eg. a.exe will require a.exe to be launched, a.html may be iexplore */ 1194 hinst = FindExecutableW (thisDir, NULL, temp); 1195 if ((INT_PTR)hinst < 32) 1196 console = 0; 1197 else 1198 console = SHGetFileInfoW(temp, 0, &psfi, sizeof(psfi), SHGFI_EXETYPE); 1199 1200 ZeroMemory (&st, sizeof(STARTUPINFOW)); 1201 st.cb = sizeof(STARTUPINFOW); 1202 init_msvcrt_io_block(&st); 1203 1204 /* Launch the process and if a CUI wait on it to complete 1205 Note: Launching internal wine processes cannot specify a full path to exe */ 1206 status = CreateProcessW(thisDir, 1207 command, NULL, NULL, TRUE, 0, NULL, NULL, &st, &pe); ... --- snip ---
$ sha1sum Windows7-USB-DVD-tool.exe ed1108a525066d1f850023cb5bfa05fc4ed21983 Windows7-USB-DVD-tool.exe
$ du -sh Windows7-USB-DVD-tool.exe 2.6M Windows7-USB-DVD-tool.exe
$ wine --version wine-1.7.19-70-gd6a59f7
Regards