From c96f1d524b50d4a1506c5ce4c25f8e624221f617 Mon Sep 17 00:00:00 2001 From: James Hawkins Date: Tue, 3 Jul 2007 19:17:26 -0700 Subject: [PATCH] msi: Handle remote calls to MsiGetMode. --- dlls/msi/install.c | 16 ++++++++++++++++ dlls/msi/msiserver.idl | 2 ++ dlls/msi/package.c | 8 ++++++++ 3 files changed, 26 insertions(+) diff --git a/dlls/msi/install.c b/dlls/msi/install.c index 2d0a3654180..e7ee92be427 100644 --- a/dlls/msi/install.c +++ b/dlls/msi/install.c @@ -612,7 +612,23 @@ BOOL WINAPI MsiGetMode(MSIHANDLE hInstall, MSIRUNMODE iRunMode) package = msihandle2msiinfo(hInstall, MSIHANDLETYPE_PACKAGE); if (!package) + { + BOOL ret; + HRESULT hr; + IWineMsiRemotePackage *remote_package; + + remote_package = (IWineMsiRemotePackage *)msi_get_remote(hInstall); + if (!remote_package) + return FALSE; + + hr = IWineMsiRemotePackage_GetMode(remote_package, iRunMode, &ret); + IWineMsiRemotePackage_Release(remote_package); + + if (hr == S_OK) + return ret; + return FALSE; + } switch (iRunMode) { diff --git a/dlls/msi/msiserver.idl b/dlls/msi/msiserver.idl index 36ccc7c7ab0..aad2b3ab6d2 100644 --- a/dlls/msi/msiserver.idl +++ b/dlls/msi/msiserver.idl @@ -26,6 +26,7 @@ import "oaidl.idl"; cpp_quote("#if 0") typedef unsigned long MSIHANDLE; typedef int INSTALLMESSAGE; +typedef int MSIRUNMODE; cpp_quote("#endif") [ @@ -45,6 +46,7 @@ interface IWineMsiRemotePackage : IUnknown HRESULT GetTargetPath( [in] BSTR *folder, [out] BSTR *value, [out] DWORD *size ); HRESULT SetTargetPath( [in] BSTR *folder, [in] BSTR *value ); HRESULT GetSourcePath( [in] BSTR *folder, [out] BSTR *value, [out] DWORD *size ); + HRESULT GetMode( [in] MSIRUNMODE mode, [out] BOOL *ret ); } [ diff --git a/dlls/msi/package.c b/dlls/msi/package.c index 62fa702454f..d25c7aedfc2 100644 --- a/dlls/msi/package.c +++ b/dlls/msi/package.c @@ -1611,6 +1611,13 @@ HRESULT WINAPI mrp_GetSourcePath( IWineMsiRemotePackage *iface, BSTR *folder, BS return HRESULT_FROM_WIN32(r); } +HRESULT WINAPI mrp_GetMode( IWineMsiRemotePackage *iface, MSIRUNMODE mode, BOOL *ret ) +{ + msi_remote_package_impl* This = mrp_from_IWineMsiRemotePackage( iface ); + *ret = MsiGetMode(This->package, mode); + return S_OK; +} + static const IWineMsiRemotePackageVtbl msi_remote_package_vtbl = { mrp_QueryInterface, @@ -1626,6 +1633,7 @@ static const IWineMsiRemotePackageVtbl msi_remote_package_vtbl = mrp_GetTargetPath, mrp_SetTargetPath, mrp_GetSourcePath, + mrp_GetMode, }; HRESULT create_msi_remote_package( IUnknown *pOuter, LPVOID *ppObj )