From dc0889752ae6a08303bfcb7c4d2013635e870f79 Mon Sep 17 00:00:00 2001 From: James Hawkins Date: Thu, 10 Dec 2009 17:02:24 -0800 Subject: [PATCH] msi: Refactor the Installer.UILevel method into InstallerImpl_UILevel. --- dlls/msi/automation.c | 63 ++++++++++++++++++++++++++----------------- 1 file changed, 39 insertions(+), 24 deletions(-) diff --git a/dlls/msi/automation.c b/dlls/msi/automation.c index 0d423822bf6..674bd8de940 100644 --- a/dlls/msi/automation.c +++ b/dlls/msi/automation.c @@ -1711,6 +1711,43 @@ static HRESULT InstallerImpl_SummaryInformation(WORD wFlags, return S_OK; } +static HRESULT InstallerImpl_UILevel(WORD wFlags, + DISPPARAMS* pDispParams, + VARIANT* pVarResult, + EXCEPINFO* pExcepInfo, + UINT* puArgErr) +{ + HRESULT hr; + VARIANTARG varg0; + INSTALLUILEVEL ui; + + if (!(wFlags & DISPATCH_PROPERTYPUT) && !(wFlags & DISPATCH_PROPERTYGET)) + return DISP_E_MEMBERNOTFOUND; + + if (wFlags & DISPATCH_PROPERTYPUT) + { + VariantInit(&varg0); + hr = DispGetParam(pDispParams, 0, VT_I4, &varg0, puArgErr); + if (FAILED(hr)) + return hr; + + ui = MsiSetInternalUI(V_I4(&varg0), NULL); + if (ui == INSTALLUILEVEL_NOCHANGE) + return DISP_E_EXCEPTION; + } + else if (wFlags & DISPATCH_PROPERTYGET) + { + ui = MsiSetInternalUI(INSTALLUILEVEL_NOCHANGE, NULL); + if (ui == INSTALLUILEVEL_NOCHANGE) + return DISP_E_EXCEPTION; + + V_VT(pVarResult) = VT_I4; + V_I4(pVarResult) = ui; + } + + return S_OK; +} + static HRESULT WINAPI InstallerImpl_Invoke( AutomationObject* This, DISPID dispIdMember, @@ -1728,7 +1765,6 @@ static HRESULT WINAPI InstallerImpl_Invoke( HRESULT hr; LPWSTR szString = NULL; DWORD dwSize = 0; - INSTALLUILEVEL ui; VariantInit(&varg0); VariantInit(&varg1); @@ -1758,29 +1794,8 @@ static HRESULT WINAPI InstallerImpl_Invoke( puArgErr); case DISPID_INSTALLER_UILEVEL: - if (wFlags & DISPATCH_PROPERTYPUT) - { - hr = DispGetParam(pDispParams, 0, VT_I4, &varg0, puArgErr); - if (FAILED(hr)) return hr; - if ((ui = MsiSetInternalUI(V_I4(&varg0), NULL) == INSTALLUILEVEL_NOCHANGE)) - { - ERR("MsiSetInternalUI failed\n"); - return DISP_E_EXCEPTION; - } - } - else if (wFlags & DISPATCH_PROPERTYGET) - { - if ((ui = MsiSetInternalUI(INSTALLUILEVEL_NOCHANGE, NULL) == INSTALLUILEVEL_NOCHANGE)) - { - ERR("MsiSetInternalUI failed\n"); - return DISP_E_EXCEPTION; - } - - V_VT(pVarResult) = VT_I4; - V_I4(pVarResult) = ui; - } - else return DISP_E_MEMBERNOTFOUND; - break; + return InstallerImpl_UILevel(wFlags, pDispParams, + pVarResult, pExcepInfo, puArgErr); case DISPID_INSTALLER_ENABLELOG: if (wFlags & DISPATCH_METHOD)