James Hawkins : msi: Refactor the Installer. InstallProduct method into InstallerImpl_InstallProduct.
Alexandre Julliard
julliard at winehq.org
Fri Dec 11 11:04:46 CST 2009
Module: wine
Branch: master
Commit: 96c480b880fe9c696791a074286d47fded32eeee
URL: http://source.winehq.org/git/wine.git/?a=commit;h=96c480b880fe9c696791a074286d47fded32eeee
Author: James Hawkins <truiken at gmail.com>
Date: Thu Dec 10 17:02:39 2009 -0800
msi: Refactor the Installer.InstallProduct method into InstallerImpl_InstallProduct.
---
dlls/msi/automation.c | 59 ++++++++++++++++++++++++++++++++----------------
1 files changed, 39 insertions(+), 20 deletions(-)
diff --git a/dlls/msi/automation.c b/dlls/msi/automation.c
index 1e25ec9..031b11e 100644
--- a/dlls/msi/automation.c
+++ b/dlls/msi/automation.c
@@ -1763,6 +1763,42 @@ static HRESULT InstallerImpl_EnableLog(WORD wFlags,
return S_OK;
}
+static HRESULT InstallerImpl_InstallProduct(WORD wFlags,
+ DISPPARAMS* pDispParams,
+ VARIANT* pVarResult,
+ EXCEPINFO* pExcepInfo,
+ UINT* puArgErr)
+{
+ UINT ret;
+ HRESULT hr;
+ VARIANTARG varg0, varg1;
+
+ if (!(wFlags & DISPATCH_METHOD))
+ return DISP_E_MEMBERNOTFOUND;
+
+ VariantInit(&varg0);
+ hr = DispGetParam(pDispParams, 0, VT_BSTR, &varg0, puArgErr);
+ if (FAILED(hr))
+ return hr;
+
+ VariantInit(&varg1);
+ hr = DispGetParam(pDispParams, 1, VT_BSTR, &varg1, puArgErr);
+ if (FAILED(hr))
+ goto done;
+
+ ret = MsiInstallProductW(V_BSTR(&varg0), V_BSTR(&varg1));
+ if (ret != ERROR_SUCCESS)
+ {
+ hr = DISP_E_EXCEPTION;
+ goto done;
+ }
+
+done:
+ VariantClear(&varg0);
+ VariantClear(&varg1);
+ return hr;
+}
+
static HRESULT InstallerImpl_LastErrorRecord(WORD wFlags,
DISPPARAMS* pDispParams,
VARIANT* pVarResult,
@@ -1892,26 +1928,9 @@ static HRESULT WINAPI InstallerImpl_Invoke(
pVarResult, pExcepInfo, puArgErr);
case DISPID_INSTALLER_INSTALLPRODUCT:
- if (wFlags & DISPATCH_METHOD)
- {
- hr = DispGetParam(pDispParams, 0, VT_BSTR, &varg0, puArgErr);
- if (FAILED(hr)) return hr;
- hr = DispGetParam(pDispParams, 1, VT_BSTR, &varg1, puArgErr);
- if (FAILED(hr))
- {
- VariantClear(&varg0);
- return hr;
- }
- if ((ret = MsiInstallProductW(V_BSTR(&varg0), V_BSTR(&varg1))) != ERROR_SUCCESS)
- {
- VariantClear(&varg1);
- VariantClear(&varg0);
- ERR("MsiInstallProduct returned %d\n", ret);
- return DISP_E_EXCEPTION;
- }
- }
- else return DISP_E_MEMBERNOTFOUND;
- break;
+ return InstallerImpl_InstallProduct(wFlags, pDispParams,
+ pVarResult, pExcepInfo,
+ puArgErr);
case DISPID_INSTALLER_VERSION:
if (wFlags & DISPATCH_PROPERTYGET) {
More information about the wine-cvs
mailing list