/reactos/dll/win32/wuapi/installer.c
C | 348 lines | 289 code | 40 blank | 19 comment | 3 complexity | 4ed9a587ee75d4a9947731721f6518a2 MD5 | raw file
- /*
- * IUpdateInstaller implementation
- *
- * Copyright 2008 Hans Leidekker
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
- #include "wuapi_private.h"
- typedef struct _update_installer
- {
- IUpdateInstaller IUpdateInstaller_iface;
- LONG refs;
- } update_installer;
- static inline update_installer *impl_from_IUpdateInstaller( IUpdateInstaller *iface )
- {
- return CONTAINING_RECORD(iface, update_installer, IUpdateInstaller_iface);
- }
- static ULONG WINAPI update_installer_AddRef(
- IUpdateInstaller *iface )
- {
- update_installer *update_installer = impl_from_IUpdateInstaller( iface );
- return InterlockedIncrement( &update_installer->refs );
- }
- static ULONG WINAPI update_installer_Release(
- IUpdateInstaller *iface )
- {
- update_installer *update_installer = impl_from_IUpdateInstaller( iface );
- LONG refs = InterlockedDecrement( &update_installer->refs );
- if (!refs)
- {
- TRACE("destroying %p\n", update_installer);
- HeapFree( GetProcessHeap(), 0, update_installer );
- }
- return refs;
- }
- static HRESULT WINAPI update_installer_QueryInterface(
- IUpdateInstaller *iface,
- REFIID riid,
- void **ppvObject )
- {
- update_installer *This = impl_from_IUpdateInstaller( iface );
- TRACE("%p %s %p\n", This, debugstr_guid( riid ), ppvObject );
- if ( IsEqualGUID( riid, &IID_IUpdateInstaller ) ||
- IsEqualGUID( riid, &IID_IDispatch ) ||
- IsEqualGUID( riid, &IID_IUnknown ) )
- {
- *ppvObject = iface;
- }
- else
- {
- FIXME("interface %s not implemented\n", debugstr_guid(riid));
- return E_NOINTERFACE;
- }
- IUpdateInstaller_AddRef( iface );
- return S_OK;
- }
- static HRESULT WINAPI update_installer_GetTypeInfoCount(
- IUpdateInstaller *iface,
- UINT *pctinfo )
- {
- FIXME("\n");
- return E_NOTIMPL;
- }
- static HRESULT WINAPI update_installer_GetTypeInfo(
- IUpdateInstaller *iface,
- UINT iTInfo,
- LCID lcid,
- ITypeInfo **ppTInfo )
- {
- FIXME("\n");
- return E_NOTIMPL;
- }
- static HRESULT WINAPI update_installer_GetIDsOfNames(
- IUpdateInstaller *iface,
- REFIID riid,
- LPOLESTR *rgszNames,
- UINT cNames,
- LCID lcid,
- DISPID *rgDispId )
- {
- FIXME("\n");
- return E_NOTIMPL;
- }
- static HRESULT WINAPI update_installer_Invoke(
- IUpdateInstaller *iface,
- DISPID dispIdMember,
- REFIID riid,
- LCID lcid,
- WORD wFlags,
- DISPPARAMS *pDispParams,
- VARIANT *pVarResult,
- EXCEPINFO *pExcepInfo,
- UINT *puArgErr )
- {
- FIXME("\n");
- return E_NOTIMPL;
- }
- static HRESULT WINAPI update_installer_get_ClientApplicationID(
- IUpdateInstaller *This,
- BSTR *retval )
- {
- FIXME("\n");
- return E_NOTIMPL;
- }
- static HRESULT WINAPI update_installer_put_ClientApplicationID(
- IUpdateInstaller *This,
- BSTR value )
- {
- FIXME("%p, %s\n", This, debugstr_w(value));
- return E_NOTIMPL;
- }
- static HRESULT WINAPI update_installer_get_IsForced(
- IUpdateInstaller *This,
- VARIANT_BOOL *retval )
- {
- FIXME("\n");
- return E_NOTIMPL;
- }
- static HRESULT WINAPI update_installer_put_IsForced(
- IUpdateInstaller *This,
- VARIANT_BOOL value )
- {
- FIXME("\n");
- return E_NOTIMPL;
- }
- static HRESULT WINAPI update_installer_get_ParentHwnd(
- IUpdateInstaller *This,
- HWND *retval )
- {
- FIXME("\n");
- return E_NOTIMPL;
- }
- static HRESULT WINAPI update_installer_put_ParentHwnd(
- IUpdateInstaller *This,
- HWND value )
- {
- FIXME("\n");
- return E_NOTIMPL;
- }
- static HRESULT WINAPI update_installer_put_ParentWindow(
- IUpdateInstaller *This,
- IUnknown *value )
- {
- FIXME("\n");
- return E_NOTIMPL;
- }
- static HRESULT WINAPI update_installer_get_ParentWindow(
- IUpdateInstaller *This,
- IUnknown **retval )
- {
- FIXME("\n");
- return E_NOTIMPL;
- }
- static HRESULT WINAPI update_installer_get_Updates(
- IUpdateInstaller *This,
- IUpdateCollection **retval )
- {
- FIXME("\n");
- return E_NOTIMPL;
- }
- static HRESULT WINAPI update_installer_put_Updates(
- IUpdateInstaller *This,
- IUpdateCollection *value )
- {
- FIXME("\n");
- return E_NOTIMPL;
- }
- static HRESULT WINAPI update_installer_BeginInstall(
- IUpdateInstaller *This,
- IUnknown *onProgressChanged,
- IUnknown *onCompleted,
- VARIANT state,
- IInstallationJob **retval )
- {
- FIXME("\n");
- return E_NOTIMPL;
- }
- static HRESULT WINAPI update_installer_BeginUninstall(
- IUpdateInstaller *This,
- IUnknown *onProgressChanged,
- IUnknown *onCompleted,
- VARIANT state,
- IInstallationJob **retval )
- {
- FIXME("\n");
- return E_NOTIMPL;
- }
- static HRESULT WINAPI update_installer_EndInstall(
- IUpdateInstaller *This,
- IInstallationJob *value,
- IInstallationResult **retval )
- {
- FIXME("\n");
- return E_NOTIMPL;
- }
- static HRESULT WINAPI update_installer_EndUninstall(
- IUpdateInstaller *This,
- IInstallationJob *value,
- IInstallationResult **retval )
- {
- FIXME("\n");
- return E_NOTIMPL;
- }
- static HRESULT WINAPI update_installer_Install(
- IUpdateInstaller *This,
- IInstallationResult **retval )
- {
- FIXME("\n");
- return E_NOTIMPL;
- }
- static HRESULT WINAPI update_installer_RunWizard(
- IUpdateInstaller *This,
- BSTR dialogTitle,
- IInstallationResult **retval )
- {
- FIXME("\n");
- return E_NOTIMPL;
- }
- static HRESULT WINAPI update_installer_get_IsBusy(
- IUpdateInstaller *This,
- VARIANT_BOOL *retval )
- {
- FIXME("\n");
- return E_NOTIMPL;
- }
- static HRESULT WINAPI update_installer_Uninstall(
- IUpdateInstaller *This,
- IInstallationResult **retval )
- {
- FIXME("\n");
- return E_NOTIMPL;
- }
- static HRESULT WINAPI update_installer_get_AllowSourcePrompts(
- IUpdateInstaller *This,
- VARIANT_BOOL *retval )
- {
- FIXME("\n");
- return E_NOTIMPL;
- }
- static HRESULT WINAPI update_installer_put_AllowSourcePrompts(
- IUpdateInstaller *This,
- VARIANT_BOOL value )
- {
- FIXME("\n");
- return E_NOTIMPL;
- }
- static HRESULT WINAPI update_installer_get_RebootRequiredBeforeInstallation(
- IUpdateInstaller *This,
- VARIANT_BOOL *retval )
- {
- FIXME("\n");
- return E_NOTIMPL;
- }
- static const struct IUpdateInstallerVtbl update_installer_vtbl =
- {
- update_installer_QueryInterface,
- update_installer_AddRef,
- update_installer_Release,
- update_installer_GetTypeInfoCount,
- update_installer_GetTypeInfo,
- update_installer_GetIDsOfNames,
- update_installer_Invoke,
- update_installer_get_ClientApplicationID,
- update_installer_put_ClientApplicationID,
- update_installer_get_IsForced,
- update_installer_put_IsForced,
- update_installer_get_ParentHwnd,
- update_installer_put_ParentHwnd,
- update_installer_put_ParentWindow,
- update_installer_get_ParentWindow,
- update_installer_get_Updates,
- update_installer_put_Updates,
- update_installer_BeginInstall,
- update_installer_BeginUninstall,
- update_installer_EndInstall,
- update_installer_EndUninstall,
- update_installer_Install,
- update_installer_RunWizard,
- update_installer_get_IsBusy,
- update_installer_Uninstall,
- update_installer_get_AllowSourcePrompts,
- update_installer_put_AllowSourcePrompts,
- update_installer_get_RebootRequiredBeforeInstallation
- };
- HRESULT UpdateInstaller_create( LPVOID *ppObj )
- {
- update_installer *installer;
- TRACE("(%p)\n", ppObj);
- installer = HeapAlloc( GetProcessHeap(), 0, sizeof(*installer) );
- if (!installer) return E_OUTOFMEMORY;
- installer->IUpdateInstaller_iface.lpVtbl = &update_installer_vtbl;
- installer->refs = 1;
- *ppObj = &installer->IUpdateInstaller_iface;
- TRACE("returning iface %p\n", *ppObj);
- return S_OK;
- }