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