Nikolay Sivov : msi: Create installer object initializing automation object data.

Alexandre Julliard julliard at winehq.org
Mon Jan 16 13:01:31 CST 2012


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

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Sat Jan 14 16:38:58 2012 +0300

msi: Create installer object initializing automation object data.

---

 dlls/msi/automation.c |   25 ++++++++++++++++++++++---
 1 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/dlls/msi/automation.c b/dlls/msi/automation.c
index b416007..933698f 100644
--- a/dlls/msi/automation.c
+++ b/dlls/msi/automation.c
@@ -2410,10 +2410,29 @@ static HRESULT InstallerImpl_Invoke(
     }
 }
 
-/* Wrapper around create_automation_object to create an installer object. */
-HRESULT create_msiserver(IUnknown *pOuter, LPVOID *ppObj)
+HRESULT create_msiserver(IUnknown *outer, void **ppObj)
 {
-    return create_automation_object(0, pOuter, ppObj, &DIID_Installer, InstallerImpl_Invoke, NULL, 0);
+    AutomationObject *installer;
+    HRESULT hr;
+
+    TRACE("(%p %p)\n", outer, ppObj);
+
+    if (outer)
+        return CLASS_E_NOAGGREGATION;
+
+    installer = msi_alloc(sizeof(AutomationObject));
+    if (!installer) return E_OUTOFMEMORY;
+
+    hr = init_automation_object(installer, 0, &DIID_Installer, InstallerImpl_Invoke, NULL);
+    if (hr != S_OK)
+    {
+        msi_free(installer);
+        return hr;
+    }
+
+    *ppObj = &installer->IDispatch_iface;
+
+    return hr;
 }
 
 HRESULT create_session(MSIHANDLE msiHandle, IDispatch *installer, IDispatch **disp)




More information about the wine-cvs mailing list