James Hawkins : msi: Refactor the Installer. Version method into InstallerImpl_Version.

Alexandre Julliard julliard at winehq.org
Fri Dec 11 11:04:47 CST 2009


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

Author: James Hawkins <truiken at gmail.com>
Date:   Thu Dec 10 17:02:49 2009 -0800

msi: Refactor the Installer.Version method into InstallerImpl_Version.

---

 dlls/msi/automation.c |   48 ++++++++++++++++++++++++++++++------------------
 1 files changed, 30 insertions(+), 18 deletions(-)

diff --git a/dlls/msi/automation.c b/dlls/msi/automation.c
index 031b11e..f26ad53 100644
--- a/dlls/msi/automation.c
+++ b/dlls/msi/automation.c
@@ -1799,6 +1799,34 @@ done:
     return hr;
 }
 
+static HRESULT InstallerImpl_Version(WORD wFlags,
+                                     VARIANT* pVarResult,
+                                     EXCEPINFO* pExcepInfo,
+                                     UINT* puArgErr)
+{
+    HRESULT hr;
+    DLLVERSIONINFO verinfo;
+    WCHAR version[MAX_PATH];
+
+    static const WCHAR format[] = {
+        '%','d','.','%','d','.','%','d','.','%','d',0};
+
+    if (!(wFlags & DISPATCH_PROPERTYGET))
+        return DISP_E_MEMBERNOTFOUND;
+
+    verinfo.cbSize = sizeof(DLLVERSIONINFO);
+    hr = DllGetVersion(&verinfo);
+    if (FAILED(hr))
+        return hr;
+
+    sprintfW(version, format, verinfo.dwMajorVersion, verinfo.dwMinorVersion,
+             verinfo.dwBuildNumber, verinfo.dwPlatformID);
+
+    V_VT(pVarResult) = VT_BSTR;
+    V_BSTR(pVarResult) = SysAllocString(version);
+    return S_OK;
+}
+
 static HRESULT InstallerImpl_LastErrorRecord(WORD wFlags,
                                              DISPPARAMS* pDispParams,
                                              VARIANT* pVarResult,
@@ -1933,24 +1961,8 @@ static HRESULT WINAPI InstallerImpl_Invoke(
                                                 puArgErr);
 
         case DISPID_INSTALLER_VERSION:
-            if (wFlags & DISPATCH_PROPERTYGET) {
-                DLLVERSIONINFO verinfo;
-                WCHAR version[MAX_PATH];
-
-                static const WCHAR format[] = {'%','d','.','%','d','.','%','d','.','%','d',0};
-
-                verinfo.cbSize = sizeof(DLLVERSIONINFO);
-                hr = DllGetVersion(&verinfo);
-                if (FAILED(hr)) return hr;
-
-                sprintfW(version, format, verinfo.dwMajorVersion, verinfo.dwMinorVersion,
-                         verinfo.dwBuildNumber, verinfo.dwPlatformID);
-
-                V_VT(pVarResult) = VT_BSTR;
-                V_BSTR(pVarResult) = SysAllocString(version);
-            }
-            else return DISP_E_MEMBERNOTFOUND;
-            break;
+            return InstallerImpl_Version(wFlags, pVarResult,
+                                         pExcepInfo, puArgErr);
 
         case DISPID_INSTALLER_LASTERRORRECORD:
             return InstallerImpl_LastErrorRecord(wFlags, pDispParams,




More information about the wine-cvs mailing list