msi [13/13]: Handle remote calls to MsiSetInstallLevel
James Hawkins
truiken at gmail.com
Tue Jul 3 21:20:48 CDT 2007
Hi,
Changelog:
* Handle remote calls to MsiSetInstallLevel.
dlls/msi/install.c | 27 ++++++++++++++++++++++++---
dlls/msi/msiserver.idl | 1 +
dlls/msi/package.c | 8 ++++++++
3 files changed, 33 insertions(+), 3 deletions(-)
--
James Hawkins
-------------- next part --------------
diff --git a/dlls/msi/install.c b/dlls/msi/install.c
index 6e33c2c..cb5f77b 100644
--- a/dlls/msi/install.c
+++ b/dlls/msi/install.c
@@ -1100,9 +1100,30 @@ UINT WINAPI MsiSetInstallLevel(MSIHANDLE
TRACE("%ld %i\n", hInstall, iInstallLevel);
- package = msihandle2msiinfo( hInstall, MSIHANDLETYPE_PACKAGE );
- if ( !package )
- return ERROR_INVALID_HANDLE;
+ package = msihandle2msiinfo(hInstall, MSIHANDLETYPE_PACKAGE);
+ if (!package)
+ {
+ HRESULT hr;
+ IWineMsiRemotePackage *remote_package;
+
+ remote_package = (IWineMsiRemotePackage *)msi_get_remote(hInstall);
+ if (!remote_package)
+ return ERROR_INVALID_HANDLE;
+
+ hr = IWineMsiRemotePackage_SetInstallLevel(remote_package, iInstallLevel);
+
+ IWineMsiRemotePackage_Release(remote_package);
+
+ if (FAILED(hr))
+ {
+ if (HRESULT_FACILITY(hr) == FACILITY_WIN32)
+ return HRESULT_CODE(hr);
+
+ return ERROR_FUNCTION_FAILED;
+ }
+
+ return ERROR_SUCCESS;
+ }
r = MSI_SetInstallLevel( package, iInstallLevel );
diff --git a/dlls/msi/msiserver.idl b/dlls/msi/msiserver.idl
index d30a7a8..ef4ce5e 100644
--- a/dlls/msi/msiserver.idl
+++ b/dlls/msi/msiserver.idl
@@ -54,6 +54,7 @@ interface IWineMsiRemotePackage : IUnkno
HRESULT GetComponentState( [in] BSTR *component, [out] INSTALLSTATE *installed, [out] INSTALLSTATE *action );
HRESULT SetComponentState( [in] BSTR *component, [in] INSTALLSTATE state );
HRESULT GetLanguage( [out] LANGID *language );
+ HRESULT SetInstallLevel( [in] int level );
}
[
diff --git a/dlls/msi/package.c b/dlls/msi/package.c
index 8038dd1..276271b 100644
--- a/dlls/msi/package.c
+++ b/dlls/msi/package.c
@@ -1655,6 +1655,13 @@ HRESULT WINAPI mrp_GetLanguage( IWineMsi
return S_OK;
}
+HRESULT WINAPI mrp_SetInstallLevel( IWineMsiRemotePackage *iface, int level )
+{
+ msi_remote_package_impl* This = mrp_from_IWineMsiRemotePackage( iface );
+ UINT r = MsiSetInstallLevel(This->package, level);
+ return HRESULT_FROM_WIN32(r);
+}
+
static const IWineMsiRemotePackageVtbl msi_remote_package_vtbl =
{
mrp_QueryInterface,
@@ -1676,6 +1683,7 @@ static const IWineMsiRemotePackageVtbl m
mrp_GetComponentState,
mrp_SetComponentState,
mrp_GetLanguage,
+ mrp_SetInstallLevel,
};
HRESULT create_msi_remote_package( IUnknown *pOuter, LPVOID *ppObj )
--
1.4.1
More information about the wine-patches
mailing list