mirror of
https://github.com/reactos/wine.git
synced 2024-11-26 05:00:30 +00:00
msi: automation: Implement Installer::OpenPackage.
This commit is contained in:
parent
e4d211a5e9
commit
8026c070bc
@ -861,3 +861,56 @@ static HRESULT WINAPI SessionImpl_Invoke(
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI InstallerImpl_Invoke(
|
||||
AutomationObject* This,
|
||||
DISPID dispIdMember,
|
||||
REFIID riid,
|
||||
LCID lcid,
|
||||
WORD wFlags,
|
||||
DISPPARAMS* pDispParams,
|
||||
VARIANT* pVarResult,
|
||||
EXCEPINFO* pExcepInfo,
|
||||
UINT* puArgErr)
|
||||
{
|
||||
MSIHANDLE msiHandle;
|
||||
IDispatch *pDispatch = NULL;
|
||||
UINT ret;
|
||||
VARIANTARG varg0, varg1;
|
||||
HRESULT hr;
|
||||
|
||||
VariantInit(&varg0);
|
||||
VariantInit(&varg1);
|
||||
|
||||
switch (dispIdMember)
|
||||
{
|
||||
case DISPID_INSTALLER_OPENPACKAGE:
|
||||
if (wFlags & DISPATCH_METHOD)
|
||||
{
|
||||
hr = DispGetParam(pDispParams, 0, VT_BSTR, &varg0, puArgErr);
|
||||
if (FAILED(hr)) return hr;
|
||||
hr = DispGetParam(pDispParams, 1, VT_I4, &varg1, puArgErr);
|
||||
if (FAILED(hr)) return hr;
|
||||
V_VT(pVarResult) = VT_DISPATCH;
|
||||
if ((ret = MsiOpenPackageExW(V_BSTR(&varg0), V_I4(&varg1), &msiHandle)) == ERROR_SUCCESS)
|
||||
{
|
||||
if (SUCCEEDED(create_automation_object(msiHandle, NULL, (LPVOID*)&pDispatch, &DIID_Session, SessionImpl_Invoke)))
|
||||
{
|
||||
IDispatch_AddRef(pDispatch);
|
||||
V_DISPATCH(pVarResult) = pDispatch;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ERR("MsiOpenPackageEx returned %d\n", ret);
|
||||
return DISP_E_EXCEPTION;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
return DISP_E_MEMBERNOTFOUND;
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user