Module: wine Branch: master Commit: c96f1d524b50d4a1506c5ce4c25f8e624221f617 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c96f1d524b50d4a1506c5ce4c2...
Author: James Hawkins truiken@gmail.com Date: Tue Jul 3 19:17:26 2007 -0700
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(+), 0 deletions(-)
diff --git a/dlls/msi/install.c b/dlls/msi/install.c index 2d0a365..e7ee92b 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 36ccc7c..aad2b3a 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 62fa702..d25c7ae 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 )