msi [9/13]: Handle remote calls to MsiGetFeatureState
James Hawkins
truiken at gmail.com
Tue Jul 3 21:18:44 CDT 2007
Hi,
Changelog:
* Handle remote calls to MsiGetFeatureState.
dlls/msi/install.c | 23 ++++++++++++++++++++++-
dlls/msi/msiserver.idl | 1 +
dlls/msi/package.c | 9 +++++++++
3 files changed, 32 insertions(+), 1 deletions(-)
--
James Hawkins
-------------- next part --------------
diff --git a/dlls/msi/install.c b/dlls/msi/install.c
index c9a34cc..e1a6b88 100644
--- a/dlls/msi/install.c
+++ b/dlls/msi/install.c
@@ -829,7 +829,28 @@ UINT WINAPI MsiGetFeatureStateW(MSIHANDL
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_GetFeatureState(remote_package, (BSTR *)szFeature,
+ piInstalled, piAction);
+
+ if (FAILED(hr))
+ {
+ if (HRESULT_FACILITY(hr) == FACILITY_WIN32)
+ return HRESULT_CODE(hr);
+
+ return ERROR_FUNCTION_FAILED;
+ }
+
+ return ERROR_SUCCESS;
+ }
+
ret = MSI_GetFeatureStateW(package, szFeature, piInstalled, piAction);
msiobj_release( &package->hdr );
return ret;
diff --git a/dlls/msi/msiserver.idl b/dlls/msi/msiserver.idl
index bf9ff26..39b3d00 100644
--- a/dlls/msi/msiserver.idl
+++ b/dlls/msi/msiserver.idl
@@ -48,6 +48,7 @@ interface IWineMsiRemotePackage : IUnkno
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 );
+ HRESULT GetFeatureState( [in] BSTR *feature, [out] INSTALLSTATE *installed, [out] INSTALLSTATE *action );
HRESULT SetFeatureState( [in] BSTR *feature, [in] INSTALLSTATE state );
}
diff --git a/dlls/msi/package.c b/dlls/msi/package.c
index 72eae3b..a47cbda 100644
--- a/dlls/msi/package.c
+++ b/dlls/msi/package.c
@@ -1618,6 +1618,14 @@ HRESULT WINAPI mrp_GetMode( IWineMsiRemo
return S_OK;
}
+HRESULT WINAPI mrp_GetFeatureState( IWineMsiRemotePackage *iface, BSTR *feature,
+ INSTALLSTATE *installed, INSTALLSTATE *action )
+{
+ msi_remote_package_impl* This = mrp_from_IWineMsiRemotePackage( iface );
+ UINT r = MsiGetFeatureStateW(This->package, (LPWSTR)feature, installed, action);
+ return HRESULT_FROM_WIN32(r);
+}
+
HRESULT WINAPI mrp_SetFeatureState( IWineMsiRemotePackage *iface, BSTR *feature, INSTALLSTATE state )
{
msi_remote_package_impl* This = mrp_from_IWineMsiRemotePackage( iface );
@@ -1641,6 +1649,7 @@ static const IWineMsiRemotePackageVtbl m
mrp_SetTargetPath,
mrp_GetSourcePath,
mrp_GetMode,
+ mrp_GetFeatureState,
mrp_SetFeatureState,
};
--
1.4.1
More information about the wine-patches
mailing list