https://bugs.winehq.org/show_bug.cgi?id=35778
Bug ID: 35778 Summary: Samsung Magician v4.0 fails to install (widl emits incorrect var type for IDispatch* defaultvalue) Product: Wine Version: 1.7.14 Hardware: x86 OS: Linux Status: NEW Severity: normal Priority: P2 Component: tools Assignee: wine-bugs@winehq.org Reporter: focht@gmx.net
Hello folks,
I split this off from bug 35390 because this looks like widl issue.
https://bugs.winehq.org/show_bug.cgi?id=35390#c7
--- quote --- So next thing to check is vartype of default value for this parameter in native typelib. If it's VT_DISPATCH|VT_BYREF, unlikely I think cause only NULL value makes sense as a default, then widl is to blame, if it's stored at VT_PTR type we need ITypeInfo code to deal with that. It's also possible that both parts are broken. --- quote ---
I downloaded native wbemdisp and registered it (regsvr32)
http://www.dlldump.com/download-dll-files_new.php/dllfiles/W/wbemdisp.dll/5....
http://filemare.com/browse/62.99.77.70/WBEMDISP.TLB
With that part the installer goes further (succeeds) and trace log reveals the defaultvalue type for IDispatch* is VT_DISPATCH (Wine's widl generates VT_PTR)
--- snip --- $ WINEDEBUG=+tid,+seh,+tlb,+wbemprox,+wbemdisp,+ole,+variant wine ./Samsung_Magician_Setup_v4.0.exe >>log.txt 2>&1 ... 002c:trace:ole:ITypeInfo_fnInvoke changing args 002c:trace:ole:dump_Variant 0x681db8->{VT_BSTR,(null)} 002c:trace:ole:dump_Variant 0x681da8->{VT_BSTR,L"root\CIMV2"} 002c:trace:ole:dump_Variant 0x681d98->{VT_BSTR,(null)} 002c:trace:ole:dump_Variant 0x681d88->{VT_BSTR,(null)} 002c:trace:variant:VariantCopy (0x1684c8->(VT_EMPTY),0x15dce0->(VT_BSTR)) 002c:trace:variant:VariantClear (0x1684c8->(VT_EMPTY)) 002c:trace:variant:VariantCopy (0x1684d8->(VT_EMPTY),0x15dcf8->(VT_BSTR)) 002c:trace:variant:VariantClear (0x1684d8->(VT_EMPTY)) 002c:trace:variant:VariantCopy (0x1684e8->(VT_EMPTY),0x15dd10->(VT_I4)) 002c:trace:variant:VariantClear (0x1684e8->(VT_EMPTY)) 002c:trace:variant:VariantCopy (0x1684f8->(VT_EMPTY),0x15dd28->(VT_DISPATCH)) 002c:trace:variant:VariantClear (0x1684f8->(VT_EMPTY)) 002c:trace:ole:DispCallFunc (0x13f358, 28, 4, 10, 9, 0x1685cc, 0x1685a8, 0x33f610 (vt=10)) 002c:trace:ole:DispCallFunc arg 0: type 8 002c:trace:ole:dump_Variant 0x681db8->{VT_BSTR,(null)} 002c:trace:ole:DispCallFunc arg 1: type 8 002c:trace:ole:dump_Variant 0x681da8->{VT_BSTR,L"root\CIMV2"} 002c:trace:ole:DispCallFunc arg 2: type 8 002c:trace:ole:dump_Variant 0x681d98->{VT_BSTR,(null)} 002c:trace:ole:DispCallFunc arg 3: type 8 002c:trace:ole:dump_Variant 0x681d88->{VT_BSTR,(null)} 002c:trace:ole:DispCallFunc arg 4: type 8 002c:trace:ole:dump_Variant 0x1684c8->{VT_BSTR,L""} 002c:trace:ole:DispCallFunc arg 5: type 8 002c:trace:ole:dump_Variant 0x1684d8->{VT_BSTR,L""} 002c:trace:ole:DispCallFunc arg 6: type 3 002c:trace:ole:dump_Variant 0x1684e8->{VT_I4,0} 002c:trace:ole:DispCallFunc arg 7: type 9 002c:trace:ole:dump_Variant 0x1684f8->{VT_DISPATCH,(nil)} 002c:trace:ole:DispCallFunc arg 8: type 16393 002c:trace:ole:dump_Variant 0x168508->{VT_DISPATCH|VT_BYREF,0x33f600} --- snip ---
Regards