Commit 0617824e authored by Mohamad Al-Jaf's avatar Mohamad Al-Jaf Committed by Alexandre Julliard

appxdeploymentclient: Add stub DLL.

parent 2dcf0b58
...@@ -974,6 +974,7 @@ enable_amstream ...@@ -974,6 +974,7 @@ enable_amstream
enable_apisetschema enable_apisetschema
enable_apphelp enable_apphelp
enable_appwiz_cpl enable_appwiz_cpl
enable_appxdeploymentclient
enable_atl enable_atl
enable_atl100 enable_atl100
enable_atl110 enable_atl110
...@@ -20996,6 +20997,7 @@ wine_fn_config_makefile dlls/apisetschema enable_apisetschema ...@@ -20996,6 +20997,7 @@ wine_fn_config_makefile dlls/apisetschema enable_apisetschema
wine_fn_config_makefile dlls/apphelp enable_apphelp wine_fn_config_makefile dlls/apphelp enable_apphelp
wine_fn_config_makefile dlls/apphelp/tests enable_tests wine_fn_config_makefile dlls/apphelp/tests enable_tests
wine_fn_config_makefile dlls/appwiz.cpl enable_appwiz_cpl wine_fn_config_makefile dlls/appwiz.cpl enable_appwiz_cpl
wine_fn_config_makefile dlls/appxdeploymentclient enable_appxdeploymentclient
wine_fn_config_makefile dlls/atl enable_atl wine_fn_config_makefile dlls/atl enable_atl
wine_fn_config_makefile dlls/atl/tests enable_tests wine_fn_config_makefile dlls/atl/tests enable_tests
wine_fn_config_makefile dlls/atl100 enable_atl100 wine_fn_config_makefile dlls/atl100 enable_atl100
......
...@@ -2362,6 +2362,7 @@ WINE_CONFIG_MAKEFILE(dlls/apisetschema) ...@@ -2362,6 +2362,7 @@ WINE_CONFIG_MAKEFILE(dlls/apisetschema)
WINE_CONFIG_MAKEFILE(dlls/apphelp) WINE_CONFIG_MAKEFILE(dlls/apphelp)
WINE_CONFIG_MAKEFILE(dlls/apphelp/tests) WINE_CONFIG_MAKEFILE(dlls/apphelp/tests)
WINE_CONFIG_MAKEFILE(dlls/appwiz.cpl) WINE_CONFIG_MAKEFILE(dlls/appwiz.cpl)
WINE_CONFIG_MAKEFILE(dlls/appxdeploymentclient)
WINE_CONFIG_MAKEFILE(dlls/atl) WINE_CONFIG_MAKEFILE(dlls/atl)
WINE_CONFIG_MAKEFILE(dlls/atl/tests) WINE_CONFIG_MAKEFILE(dlls/atl/tests)
WINE_CONFIG_MAKEFILE(dlls/atl100) WINE_CONFIG_MAKEFILE(dlls/atl100)
......
MODULE = appxdeploymentclient.dll
IMPORTS = combase
C_SRCS = \
main.c \
package.c
IDL_SRCS = \
classes.idl
1 stub @
@ stub GetApplicability
@ stub AppxCreateSharedLocalFolder
@ stub AppxPackageRepositoryRecoverStagedPackages
@ stub AppxPackageRepositoryRecoverUserInstalls
@ stub AppxRecoverUserInstallsForUpgrade
@ stub AppxDeletePackageFiles
@ stub AppxRequestRemovePackageForUser
@ stub IsPackageInstalled
@ stub RDSRecoverRequests
@ stub AppxPreStageCleanupRunTask
@ stub AppxPreRegisterPackage
@ stub ReArmAppxPreStageCleanupTask
@ stub AppxAddPackageToAllUserStoreForPbr
@ stub GetPackageApplicabilityForUserLogon
16 stub @
@ stub AppxStagePackage
@ stub AppxGetPackageInstalledLocation
@ stub AppxDestagePackage
@ stub GetApplicability2
@ stub AppxGetStagedPackageFullNameFromFamilyName
@ stub AppxIsStagedPackageStoreSigned
@ stub RegisterNotification
@ stub UnregisterNotification
@ stub GetNotificationPayload
@ stub NotifyPackageStatusChanged
@ stub VerifyPackage
@ stub AppxPreRegisterAllInboxPackages
@ stub AppxValidatePackagesWithOptions
@ stub AppxRemovePackageForAllUsers
@ stub RequestContentGroups
@ stub GetApplicability4
@ stub RequestContentGroupsForFullTrust
@ stub GeneratePreInstalledPriFiles
@ stub PopulateProtocolAndFTA
@ stub FixJunctionsForAppsIfNecessary
@ stub AppxRemovePackageForUserSid
@ stub CreateCanonicalPriFile
@ stub RegisterNotificationForUser
@ stub UnregisterNotificationForUser
@ stub GetNotificationPayloadForUser
@ stub AppxCleanupWCIReparsePoints
@ stub RepairPackageFileAcls
@ stub EnsurePackageFamilyIsRegisteredBeforeActivation
@ stub AppxCleanupSystemAppsMigratedToFOD
@ stub AppxCleanupOrphanPackages
@ stub CheckComCallerHasCapabilities
@ stub GetBundleApplicablePackages
@ stub GetApplicability5
@ stub DeleteApplicabilityInfoArray
@ stub UpdateAgentCreateDownload
@ stub UpdateAgentGetDownloadRanges
@ stub UpdateAgentCancelAllDownloads
@ stub UpdateDataSourceRegister
@ stub UpdateDataSourceAddRange
@ stub UpdateDataSourceRun
@ stub UpdateDataSourceCancelRun
@ stub GetPackageRegistrationStatusForUser
@ stub IsSharedAppsEnabled
@ stub AppInstallerUpdateAllTask
@ stub CheckAppInstallerUpdateAvailability
@ stub UpdateAgentFreeDownloadRanges
@ stub AppxRegisterPackage
@ stub IsPackageMetadataUnderSystemMetadata
@ stub GetMetadataRootForPackage
@ stub ClientGetAllPackagesToBeInstalledForUser
@ stub ClientDeleteAllPackagesFromMainPackageArray
@ stub GetPackageRegistrationStatusForUserAndDefaultAccount
@ stub UpdateAgentGetDownloadingPackageCount
@ stub PreRegisterPackagesInContainer
@ stub EnsurePackageFamiliesAreRegisteredInContainer
@ stub RemovePackageFromContainer
@ stub HasPackageFamilyBeenRegisteredForUser
@ stub CleanupProfileForUser
@ stub AppxRemoveAllPackagesForUserSid
@ stub AppxCreateSharedLocalFolderForFamilyName
@ stub AppxDoesSharedLocalFolderExistForFamilyName
@ stub AppxValidatePackages
@ stub CheckForUpdatesAndWaitForInstallerIfNeeded
@ stdcall -private DllCanUnloadNow()
@ stdcall -private DllGetActivationFactory(ptr ptr)
@ stdcall -private DllGetClassObject(ptr ptr ptr)
/*
* Runtime Classes for appxdeploymentclient.dll
*
* Copyright (C) 2023 Mohamad Al-Jaf
*
* 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
*/
#pragma makedep register
#include "windows.management.deployment.idl"
/* WinRT Windows.Management.Deployment Implementation
*
* Copyright (C) 2023 Mohamad Al-Jaf
*
* 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 "initguid.h"
#include "private.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(appx);
HRESULT WINAPI DllGetClassObject( REFCLSID clsid, REFIID riid, void **out )
{
FIXME( "clsid %s, riid %s, out %p stub!\n", debugstr_guid(clsid), debugstr_guid(riid), out );
return CLASS_E_CLASSNOTAVAILABLE;
}
HRESULT WINAPI DllGetActivationFactory( HSTRING classid, IActivationFactory **factory )
{
const WCHAR *buffer = WindowsGetStringRawBuffer( classid, NULL );
TRACE( "class %s, factory %p.\n", debugstr_hstring(classid), factory );
*factory = NULL;
if (!wcscmp( buffer, RuntimeClass_Windows_Management_Deployment_PackageManager ))
IActivationFactory_QueryInterface( package_manager_factory, &IID_IActivationFactory, (void **)factory );
if (*factory) return S_OK;
return CLASS_E_CLASSNOTAVAILABLE;
}
/* WinRT Windows.Management.Deployment.PackageManager Implementation
*
* Copyright (C) 2023 Mohamad Al-Jaf
*
* 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 "private.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(appx);
struct package_manager_statics
{
IActivationFactory IActivationFactory_iface;
LONG ref;
};
static inline struct package_manager_statics *impl_from_IActivationFactory( IActivationFactory *iface )
{
return CONTAINING_RECORD( iface, struct package_manager_statics, IActivationFactory_iface );
}
static HRESULT WINAPI factory_QueryInterface( IActivationFactory *iface, REFIID iid, void **out )
{
struct package_manager_statics *impl = impl_from_IActivationFactory( iface );
TRACE( "iface %p, iid %s, out %p.\n", iface, debugstr_guid( iid ), out );
if (IsEqualGUID( iid, &IID_IUnknown ) ||
IsEqualGUID( iid, &IID_IInspectable ) ||
IsEqualGUID( iid, &IID_IActivationFactory ))
{
*out = &impl->IActivationFactory_iface;
IInspectable_AddRef( *out );
return S_OK;
}
FIXME( "%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid( iid ) );
*out = NULL;
return E_NOINTERFACE;
}
static ULONG WINAPI factory_AddRef( IActivationFactory *iface )
{
struct package_manager_statics *impl = impl_from_IActivationFactory( iface );
ULONG ref = InterlockedIncrement( &impl->ref );
TRACE( "iface %p increasing refcount to %lu.\n", iface, ref );
return ref;
}
static ULONG WINAPI factory_Release( IActivationFactory *iface )
{
struct package_manager_statics *impl = impl_from_IActivationFactory( iface );
ULONG ref = InterlockedDecrement( &impl->ref );
TRACE( "iface %p decreasing refcount to %lu.\n", iface, ref );
return ref;
}
static HRESULT WINAPI factory_GetIids( IActivationFactory *iface, ULONG *iid_count, IID **iids )
{
FIXME( "iface %p, iid_count %p, iids %p stub!\n", iface, iid_count, iids );
return E_NOTIMPL;
}
static HRESULT WINAPI factory_GetRuntimeClassName( IActivationFactory *iface, HSTRING *class_name )
{
FIXME( "iface %p, class_name %p stub!\n", iface, class_name );
return E_NOTIMPL;
}
static HRESULT WINAPI factory_GetTrustLevel( IActivationFactory *iface, TrustLevel *trust_level )
{
FIXME( "iface %p, trust_level %p stub!\n", iface, trust_level );
return E_NOTIMPL;
}
static HRESULT WINAPI factory_ActivateInstance( IActivationFactory *iface, IInspectable **instance )
{
FIXME( "iface %p, instance %p stub!\n", iface, instance );
return E_NOTIMPL;
}
static const struct IActivationFactoryVtbl factory_vtbl =
{
factory_QueryInterface,
factory_AddRef,
factory_Release,
/* IInspectable methods */
factory_GetIids,
factory_GetRuntimeClassName,
factory_GetTrustLevel,
/* IActivationFactory methods */
factory_ActivateInstance,
};
static struct package_manager_statics package_manager_statics =
{
{&factory_vtbl},
1,
};
IActivationFactory *package_manager_factory = &package_manager_statics.IActivationFactory_iface;
/* WinRT Windows.Management.Deployment Implementation
*
* Copyright (C) 2023 Mohamad Al-Jaf
*
* 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
*/
#ifndef __WINE_WINDOWS_MANAGEMENT_DEPLOYMENT_PRIVATE_H
#define __WINE_WINDOWS_MANAGEMENT_DEPLOYMENT_PRIVATE_H
#include <stdarg.h>
#define COBJMACROS
#include "windef.h"
#include "winbase.h"
#include "winstring.h"
#include "activation.h"
#define WIDL_using_Windows_Foundation
#define WIDL_using_Windows_Foundation_Collections
#include "windows.foundation.h"
#define WIDL_using_Windows_Management_Deployment
#include "windows.management.deployment.h"
extern IActivationFactory *package_manager_factory;
#endif
...@@ -135,7 +135,7 @@ static void check_interface_( unsigned int line, void *obj, const IID *iid ) ...@@ -135,7 +135,7 @@ static void check_interface_( unsigned int line, void *obj, const IID *iid )
HRESULT hr; HRESULT hr;
hr = IUnknown_QueryInterface( iface, iid, (void **)&unk ); hr = IUnknown_QueryInterface( iface, iid, (void **)&unk );
ok_(__FILE__, line)( hr == S_OK || broken( hr == E_NOINTERFACE ) , "got hr %#lx.\n", hr ); ok_(__FILE__, line)( hr == S_OK, "got hr %#lx.\n", hr );
if (SUCCEEDED(hr)) if (SUCCEEDED(hr))
IUnknown_Release( unk ); IUnknown_Release( unk );
} }
...@@ -441,21 +441,20 @@ static void test_PackageManager(void) ...@@ -441,21 +441,20 @@ static void test_PackageManager(void)
hr = RoGetActivationFactory( str, &IID_IActivationFactory, (void **)&factory ); hr = RoGetActivationFactory( str, &IID_IActivationFactory, (void **)&factory );
WindowsDeleteString( str ); WindowsDeleteString( str );
todo_wine
ok( hr == S_OK || broken( hr == REGDB_E_CLASSNOTREG ), "got hr %#lx.\n", hr ); ok( hr == S_OK || broken( hr == REGDB_E_CLASSNOTREG ), "got hr %#lx.\n", hr );
if (hr == REGDB_E_CLASSNOTREG) if (hr == REGDB_E_CLASSNOTREG)
{ {
todo_wine
win_skip( "%s runtimeclass not registered, skipping tests.\n", wine_dbgstr_w( statics_name ) ); win_skip( "%s runtimeclass not registered, skipping tests.\n", wine_dbgstr_w( statics_name ) );
return; return;
} }
check_interface( factory, &IID_IUnknown ); check_interface( factory, &IID_IUnknown );
check_interface( factory, &IID_IInspectable ); check_interface( factory, &IID_IInspectable );
check_interface( factory, &IID_IAgileObject );
hr = IActivationFactory_ActivateInstance( factory, (IInspectable **)&manager ); hr = IActivationFactory_ActivateInstance( factory, (IInspectable **)&manager );
todo_wine
ok( hr == S_OK, "got hr %#lx.\n", hr ); ok( hr == S_OK, "got hr %#lx.\n", hr );
if (hr != S_OK) goto skip_manager;
check_interface( manager, &IID_IUnknown ); check_interface( manager, &IID_IUnknown );
check_interface( manager, &IID_IInspectable ); check_interface( manager, &IID_IInspectable );
...@@ -501,6 +500,7 @@ static void test_PackageManager(void) ...@@ -501,6 +500,7 @@ static void test_PackageManager(void)
skip_tests: skip_tests:
ref = IPackageManager_Release( manager ); ref = IPackageManager_Release( manager );
ok( !ref, "got ref %ld.\n", ref ); ok( !ref, "got ref %ld.\n", ref );
skip_manager:
ref = IActivationFactory_Release( factory ); ref = IActivationFactory_Release( factory );
ok( ref == 1, "got ref %ld.\n", ref ); ok( ref == 1, "got ref %ld.\n", ref );
} }
...@@ -527,7 +527,6 @@ static void test_PackageStatics(void) ...@@ -527,7 +527,6 @@ static void test_PackageStatics(void)
check_interface( factory, &IID_IUnknown ); check_interface( factory, &IID_IUnknown );
check_interface( factory, &IID_IInspectable ); check_interface( factory, &IID_IInspectable );
check_interface( factory, &IID_IAgileObject );
ref = IActivationFactory_Release( factory ); ref = IActivationFactory_Release( factory );
ok( ref == 1, "got ref %ld.\n", ref ); ok( ref == 1, "got ref %ld.\n", ref );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment