| Summary: | Ошибочный код возврата при вызове msinfo32.exe | ||
|---|---|---|---|
| Product: | WINE@Etersoft | Reporter: | Vitaly Lipatov <lav> |
| Component: | OLE / DDE / RPC | Assignee: | Dmitry Timoshkov <dtimoshkov> |
| Status: | CLOSED FIXED | QA Contact: | |
| Severity: | minor | ||
| Priority: | P4 | ||
| Version: | unspecified | ||
| Target Milestone: | --- | ||
| Hardware: | PC | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Заявки RT: | Связано с: | ||
| Дата напоминания: | |||
| Bug Depends on: | |||
| Bug Blocks: | 1036, 14171 | ||
| Attachments: | скрипт вызова msinfo32.exe | ||
Источник проблемы в dlls/vbscript. После выполнения 'winetricks -q wsh57' поведение меняется на описанное в первом комментарии как это происходит в Windows. (In reply to Dmitry Timoshkov from comment #1) > Источник проблемы в dlls/vbscript. После выполнения 'winetricks -q wsh57' > поведение меняется на описанное в первом комментарии как это происходит > в Windows. Исследование проблемы показало, что ее источник в другом месте. Анализ текста скрипта показал, что для выполнения msinfo32.exe используется метод WscriptShell.Run(), и поиск в исходниках Wine привел меня в dlls/wshom.ocx. Метод Run() реализован в dlls/wshom.ocx/shell.c вызовом ShellExecute(), однако в случае с получением аргумента 'wait' ожидания завершения процесса не происходит, а сразу получается его код завершения. Добавление ожидания завершения процесса с помощью WaitForSingleObject(info.hProcess, INFINITE) решило проблему с получением правильного кода возврата скриптом. Отправил патч с исправлением для принятия в winehq. (In reply to Dmitry Timoshkov from comment #2) > Исследование проблемы показало, что ее источник в другом месте. Анализ > текста скрипта показал, что для выполнения msinfo32.exe используется метод > WscriptShell.Run(), и поиск в исходниках Wine привел меня в dlls/wshom.ocx. > Метод Run() реализован в dlls/wshom.ocx/shell.c вызовом ShellExecute(), > однако в случае с получением аргумента 'wait' ожидания завершения процесса > не происходит, а сразу получается его код завершения. Добавление ожидания > завершения процесса с помощью WaitForSingleObject(info.hProcess, INFINITE) > решило проблему с получением правильного кода возврата скриптом. > > Отправил патч с исправлением для принятия в winehq. Патч принят. Отмечаю эту задачу как решенную. Принято. |
Created attachment 3930 [details] скрипт вызова msinfo32.exe При запуске скрипта в Windows появляется окно msinfo32, после закрытия которого появляется MsgBox с сообщением, что код возврата 0. При запуске в wine 4.17 появляется окно msinfo32, одновременно с которым появляется окно MsgBox с сообщением, что код возврата 259. $ wine start msinfo1251.vbs 000b:fixme:winediag:start_process Wine Staging 4.17 is a testing version containing experimental patches. 000b:fixme:winediag:start_process Please mention your exact version when filing bug reports on winehq.org. 0009:fixme:exec:SHELL_execute flags ignored: 0x00000100 [lav@lav test]$ 002b:fixme:vbscript:VBScript_SetScriptState unimplemented SCRIPTSTATE_INITIALIZED 002b:fixme:exec:SHELL_execute flags ignored: 0x00000100 002d:fixme:msinfo:wmain stub: L"MSINFO32.EXE"