James Hawkins : msi: Refactor the Installer. UILevel method into InstallerImpl_UILevel.

Alexandre Julliard julliard at winehq.org
Fri Dec 11 11:04:46 CST 2009


Module: wine
Branch: master
Commit: dc0889752ae6a08303bfcb7c4d2013635e870f79
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=dc0889752ae6a08303bfcb7c4d2013635e870f79

Author: James Hawkins <truiken at gmail.com>
Date:   Thu Dec 10 17:02:24 2009 -0800

msi: Refactor the Installer.UILevel method into InstallerImpl_UILevel.

---

 dlls/msi/automation.c |   63 ++++++++++++++++++++++++++++++------------------
 1 files changed, 39 insertions(+), 24 deletions(-)

diff --git a/dlls/msi/automation.c b/dlls/msi/automation.c
index 0d42382..674bd8d 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)




More information about the wine-cvs mailing list