James Hawkins : msi: Handle remote calls to MsiProcessMessage.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed Jul 4 06:56:51 CDT 2007
Module: wine
Branch: master
Commit: be5eec45b5f68aab9469bfc70602ec554e8057f1
URL: http://source.winehq.org/git/wine.git/?a=commit;h=be5eec45b5f68aab9469bfc70602ec554e8057f1
Author: James Hawkins <truiken at gmail.com>
Date: Tue Jul 3 19:13:45 2007 -0700
msi: Handle remote calls to MsiProcessMessage.
---
dlls/msi/msiserver.idl | 2 ++
dlls/msi/package.c | 31 ++++++++++++++++++++++++++++++-
2 files changed, 32 insertions(+), 1 deletions(-)
diff --git a/dlls/msi/msiserver.idl b/dlls/msi/msiserver.idl
index ee283f8..8bcaaf7 100644
--- a/dlls/msi/msiserver.idl
+++ b/dlls/msi/msiserver.idl
@@ -25,6 +25,7 @@ import "oaidl.idl";
cpp_quote("#if 0")
typedef unsigned long MSIHANDLE;
+typedef int INSTALLMESSAGE;
cpp_quote("#endif")
[
@@ -38,6 +39,7 @@ interface IWineMsiRemotePackage : IUnknown
HRESULT GetActiveDatabase( [out] MSIHANDLE *handle );
HRESULT GetProperty( [in] BSTR *property, [out] BSTR *value, [out] DWORD *size );
HRESULT SetProperty( [in] BSTR *property, [in] BSTR *value );
+ HRESULT ProcessMessage( [in] INSTALLMESSAGE message, [in] MSIHANDLE record );
}
[
diff --git a/dlls/msi/package.c b/dlls/msi/package.c
index e7482e0..a81d6e5 100644
--- a/dlls/msi/package.c
+++ b/dlls/msi/package.c
@@ -1142,7 +1142,28 @@ INT WINAPI MsiProcessMessage( MSIHANDLE hInstall, INSTALLMESSAGE eMessageType,
package = msihandle2msiinfo( hInstall, MSIHANDLETYPE_PACKAGE );
if( !package )
- return ERROR_INVALID_HANDLE;
+ {
+ HRESULT hr;
+ IWineMsiRemotePackage *remote_package;
+
+ remote_package = (IWineMsiRemotePackage *)msi_get_remote( hInstall );
+ if (!remote_package)
+ return ERROR_INVALID_HANDLE;
+
+ hr = IWineMsiRemotePackage_ProcessMessage( remote_package, eMessageType, hRecord );
+
+ IWineMsiRemotePackage_Release( remote_package );
+
+ if (FAILED(hr))
+ {
+ if (HRESULT_FACILITY(hr) == FACILITY_WIN32)
+ return HRESULT_CODE(hr);
+
+ return ERROR_FUNCTION_FAILED;
+ }
+
+ return ERROR_SUCCESS;
+ }
record = msihandle2msiinfo( hRecord, MSIHANDLETYPE_RECORD );
if( !record )
@@ -1548,6 +1569,13 @@ HRESULT WINAPI mrp_SetProperty( IWineMsiRemotePackage *iface, BSTR *property, BS
return HRESULT_FROM_WIN32(r);
}
+HRESULT WINAPI mrp_ProcessMessage( IWineMsiRemotePackage *iface, INSTALLMESSAGE message, MSIHANDLE record )
+{
+ msi_remote_package_impl* This = mrp_from_IWineMsiRemotePackage( iface );
+ UINT r = MsiProcessMessage(This->package, message, record);
+ return HRESULT_FROM_WIN32(r);
+}
+
static const IWineMsiRemotePackageVtbl msi_remote_package_vtbl =
{
mrp_QueryInterface,
@@ -1557,6 +1585,7 @@ static const IWineMsiRemotePackageVtbl msi_remote_package_vtbl =
mrp_GetActiveDatabase,
mrp_GetProperty,
mrp_SetProperty,
+ mrp_ProcessMessage,
};
HRESULT create_msi_remote_package( IUnknown *pOuter, LPVOID *ppObj )
More information about the wine-cvs
mailing list