[Bug 35833] New: iTunes 7 installer aborts early (automation methods HRESULT incorrectly translated to VBScript runtime Err.number)

wine-bugs at winehq.org wine-bugs at winehq.org
Fri Mar 21 15:42:25 CDT 2014


https://bugs.winehq.org/show_bug.cgi?id=35833

            Bug ID: 35833
           Summary: iTunes 7 installer aborts early (automation methods
                    HRESULT incorrectly translated to VBScript runtime
                    Err.number)
           Product: Wine
           Version: 1.7.14
          Hardware: x86
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: vbscript
          Assignee: wine-bugs at winehq.org
          Reporter: focht at gmx.net

Hello folks,

now the VBScript runtime error object and exception handling is implemented the
next thing :)

Trace log:

--- snip ---
$ WINEDEBUG=+tid,+seh,+relay,+msi,+vbscript,+ole,+variant wine
./iTunesSetup7.exe >>log.txt 2>&1
...
0039:fixme:msi:AutomationObject_GetIDsOfNames Unknown member
L"DetectGEARDriverSetDeletion", clsid {000c109e-0000-0000-c000-000000000046}
...
0039:trace:msi:AutomationObject_AddRef (0x183370/0x183370)
0039:trace:vbscript:interp_errmode 1
0039:trace:vbscript:interp_short 2
0039:Call oleaut32.SysAllocString(001f3988
L"SYSTEM\\CurrentControlSet\\Services\\GearAspiWDM") ret=f7343052
0039:trace:ole:SysAllocStringLen
L"SYSTEM\\CurrentControlSet\\Services\\GearAspiWDM"
0039:Ret  oleaut32.SysAllocString() retval=001f6284 ret=f7343052
0039:trace:vbscript:interp_string 
0039:Call oleaut32.SysAllocString(001f39e4 L"DeleteFlag") ret=f7343052
0039:trace:ole:SysAllocStringLen L"DeleteFlag"
0039:Ret  oleaut32.SysAllocString() retval=001f97b4 ret=f7343052
0039:trace:vbscript:interp_icall  
...
0039:trace:msi:AutomationObject_Invoke Method 11, L"RegistryValue" 
...
0039:Call advapi32.RegOpenKeyW(80000002,001f6464
L"SYSTEM\\CurrentControlSet\\Services\\GearAspiWDM",0064df10) ret=7ecdc24c
0039:Ret  advapi32.RegOpenKeyW() retval=00000002 ret=7ecdc24c
0039:Call oleaut32.VariantClear(0064def0) ret=7ecdc67d
0039:trace:variant:VariantClear (0x64def0->(VT_I4))
0039:Ret  oleaut32.VariantClear() retval=00000000 ret=7ecdc67d
0039:Call oleaut32.VariantClear(0064dee0) ret=7ecdc68b
0039:trace:variant:VariantClear (0x64dee0->(VT_BSTR))
0039:Ret  oleaut32.VariantClear() retval=00000000 ret=7ecdc68b
0039:Call oleaut32.VariantClear(0064ded0) ret=7ecdc699
0039:trace:variant:VariantClear (0x64ded0->(VT_BSTR))
0039:Ret  oleaut32.VariantClear() retval=00000000 ret=7ecdc699
0039:Call advapi32.RegCloseKey(00000000) ret=7ecdc6a7
0039:Ret  advapi32.RegCloseKey() retval=00000006 ret=7ecdc6a7
0039:Call oleaut32.SysFreeString(001f60f4 L"RegistryValue") ret=7ecd7ea6
0039:Ret  oleaut32.SysFreeString() retval=00000000 ret=7ecd7ea6
0039:trace:msi:AutomationObject_Invoke Returning 0x8002000b, not ok
0039:trace:msi:AutomationObject_Release (0x185e38/0x185e38)
0039:warn:vbscript:exec_script Failed 8002000b in resume next mode
0039:trace:vbscript:exec_script unwind jmp 642 stack_off 0 
...
0039:fixme:msi:AutomationObject_GetIDsOfNames Unknown member L"Err", clsid
{000c109e-0000-0000-c000-000000000046}
0039:trace:vbscript:DispatchEx_AddRef (0x1d92c8) ref=2
0039:trace:vbscript:interp_mcall 
0039:trace:ole:ITypeInfo_fnGetIDsOfNames (0x1d8de0) Name L"number" cNames 1 
...
0039:trace:vbscript:Err_Number 
0039:trace:vbscript:DispatchEx_Release (0x1d92c8) ref=2
0039:trace:vbscript:DispatchEx_Release (0x1d92c8) ref=1
0039:trace:vbscript:interp_short 9
0039:trace:vbscript:interp_nequal 
0039:trace:vbscript:var_cmp {VT_I4: -2147352565} {VT_I2: 9}
0039:Call oleaut32.VarCmp(001f5f70,001f5f80,00000000,00000000) ret=f73439a1 
...
0039:Call oleaut32.VariantClear(001f5f70) ret=f733fecd
0039:trace:variant:VariantClear (0x1f5f70->(VT_I4))
0039:Ret  oleaut32.VariantClear() retval=00000000 ret=f733fecd
0039:Call oleaut32.VariantClear(001f5f80) ret=f733fecd
0039:trace:variant:VariantClear (0x1f5f80->(VT_I2))
0039:Ret  oleaut32.VariantClear() retval=00000000 ret=f733fecd
0039:trace:vbscript:interp_jmp_false 667 
...
0037:Call user32.MessageBoxW(00000000,001e6d38 L"Unable to install the GEAR
driver set at this time. The GEARAspiWDM service use by the GEAR driver set is
scheduled to be deleted during the next system reboot. Please reboot the system
and run iTunes again.",7ed51b92 L"Install Failed",00000000) ret=7ecc3d83 
--- snip ---

The relevant VBScript snippet:

--- snip ---
Sub DetectGEARDriverSetDeletion
    Dim DeleteFlag

    On Error Resume Next
    DeleteFlag =
Session.Installer.RegistryValue(2,"SYSTEM\CurrentControlSet\Services\GearAspiWDM",
"DeleteFlag")
    If Err.number <> 9 Then
        If IsNumeric(DeleteFlag) Then
            Session.Property("GEARASPIWDM_SERVICE_DELETED") = "#" +
CStr(DeleteFlag)
        Else
            Session.Property("GEARASPIWDM_SERVICE_DELETED") = DeleteFlag
        End If
    End If
End Sub
--- snip ---

MSDN: http://msdn.microsoft.com/en-us/library/aa369471%28v=vs.85%29.aspx

--- quote ---
The RegistryValue method of the Installer object reads information about a
specified registry key of value. If the key or value specified does not exist,
the method returns an error of 9, "Subscript out of Range."
--- quote ---

Wine MSI InstallerImpl_RegistryValue() returns HRESULT = 0x8002000B
(DISP_E_BADINDEX) which seems to be right.
This code needs to be translated to VBScript runtime error code.
The equivalent would be something like 0x800A0009 ... if one searches for 
"Subscript out of Range." and "VBscript".

Source:
http://source.winehq.org/git/wine.git/blob/fc0ef22a44dee4f78b8784ada501bb8f0fcb3dcb:/dlls/vbscript/interp.c#l2030

--- snip ---
2030 HRESULT exec_script(script_ctx_t *ctx, function_t *func, vbdisp_t *vbthis,
DISPPARAMS *dp, VARIANT *res)
2031 {
2032     exec_ctx_t exec = {func->code_ctx};
2033     vbsop_t op;
2034     HRESULT hres = S_OK;
2035
2036     exec.code = func->code_ctx;
...
2106     while(exec.instr) {
2107         op = exec.instr->op;
2108         hres = op_funcs[op](&exec);
2109         if(FAILED(hres)) {
2110             ctx->err_number = hres;
2111
2112             if(exec.resume_next) {
...
--- snip ---

$ sha1sum iTunesSetup7.exe 
5cdc86b2edb1411b9a022f05b1bfbe858fbcf901  iTunesSetup7.exe

$ du -sh iTunesSetup7.exe
35M    iTunesSetup7.exe

$ wine --version
wine-1.7.14-234-g6e7440e

Regards

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list