James Hawkins : msi: Refactor the Installer. CreateRecord method into InstallerImpl_CreateRecord.
Alexandre Julliard
julliard at winehq.org
Fri Dec 11 11:04:46 CST 2009
Module: wine
Branch: master
Commit: b73389b6bf5c4649761f8650d013b9bdc88a5fd6
URL: http://source.winehq.org/git/wine.git/?a=commit;h=b73389b6bf5c4649761f8650d013b9bdc88a5fd6
Author: James Hawkins <truiken at gmail.com>
Date: Thu Dec 10 17:01:50 2009 -0800
msi: Refactor the Installer.CreateRecord method into InstallerImpl_CreateRecord.
---
dlls/msi/automation.c | 55 +++++++++++++++++++++++++++++++-----------------
1 files changed, 35 insertions(+), 20 deletions(-)
diff --git a/dlls/msi/automation.c b/dlls/msi/automation.c
index 2975df7..83f5f79 100644
--- a/dlls/msi/automation.c
+++ b/dlls/msi/automation.c
@@ -1534,6 +1534,39 @@ static void variant_from_registry_value(VARIANT *pVarResult, DWORD dwType, LPBYT
}
}
+static HRESULT InstallerImpl_CreateRecord(WORD wFlags,
+ DISPPARAMS* pDispParams,
+ VARIANT* pVarResult,
+ EXCEPINFO* pExcepInfo,
+ UINT* puArgErr)
+{
+ HRESULT hr;
+ VARIANTARG varg0;
+ MSIHANDLE hrec;
+ IDispatch* dispatch;
+
+ if (!(wFlags & DISPATCH_METHOD))
+ return DISP_E_MEMBERNOTFOUND;
+
+ VariantInit(&varg0);
+ hr = DispGetParam(pDispParams, 0, VT_I4, &varg0, puArgErr);
+ if (FAILED(hr))
+ return hr;
+
+ V_VT(pVarResult) = VT_DISPATCH;
+
+ hrec = MsiCreateRecord(V_I4(&varg0));
+ if (!hrec)
+ return DISP_E_EXCEPTION;
+
+ hr = create_automation_object(hrec, NULL, (LPVOID*)&dispatch,
+ &DIID_Record, RecordImpl_Invoke, NULL, 0);
+ if (SUCCEEDED(hr))
+ V_DISPATCH(pVarResult) = dispatch;
+
+ return hr;
+}
+
static HRESULT WINAPI InstallerImpl_Invoke(
AutomationObject* This,
DISPID dispIdMember,
@@ -1561,26 +1594,8 @@ static HRESULT WINAPI InstallerImpl_Invoke(
switch (dispIdMember)
{
case DISPID_INSTALLER_CREATERECORD:
- if (wFlags & DISPATCH_METHOD)
- {
- hr = DispGetParam(pDispParams, 0, VT_I4, &varg0, puArgErr);
- if (FAILED(hr)) return hr;
- V_VT(pVarResult) = VT_DISPATCH;
- if ((msiHandle = MsiCreateRecord(V_I4(&varg0))))
- {
- if (SUCCEEDED(hr = create_automation_object(msiHandle, NULL, (LPVOID*)&pDispatch, &DIID_Record, RecordImpl_Invoke, NULL, 0)))
- V_DISPATCH(pVarResult) = pDispatch;
- else
- ERR("Failed to create Record object, hresult 0x%08x\n", hr);
- }
- else
- {
- ERR("MsiCreateRecord failed\n");
- return DISP_E_EXCEPTION;
- }
- }
- else return DISP_E_MEMBERNOTFOUND;
- break;
+ return InstallerImpl_CreateRecord(wFlags, pDispParams,
+ pVarResult, pExcepInfo, puArgErr);
case DISPID_INSTALLER_OPENPACKAGE:
if (wFlags & DISPATCH_METHOD)
More information about the wine-cvs
mailing list