From 95f3a4b09ab5faa888c8983681e106509f646520 Mon Sep 17 00:00:00 2001 From: ge0rdi Date: Sun, 20 Sep 2020 08:20:34 +0200 Subject: [PATCH] Add GetPackageFullName helper --- .../StartMenuDLL/MetroLinkManager.cpp | 32 +++++++++++-------- Src/StartMenu/StartMenuDLL/MetroLinkManager.h | 3 ++ 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/Src/StartMenu/StartMenuDLL/MetroLinkManager.cpp b/Src/StartMenu/StartMenuDLL/MetroLinkManager.cpp index 3aac7e2..67406b6 100644 --- a/Src/StartMenu/StartMenuDLL/MetroLinkManager.cpp +++ b/Src/StartMenu/StartMenuDLL/MetroLinkManager.cpp @@ -301,21 +301,12 @@ bool CanUninstallMetroApp( const wchar_t *appid ) // Uninstalls the app with the given id void UninstallMetroApp( const wchar_t *appid ) { - CComPtr pAppItem; - if (SUCCEEDED(SHCreateItemInKnownFolder(FOLDERID_AppsFolder2,0,appid,IID_IShellItem,(void**)&pAppItem))) + auto packageName = GetPackageFullName(appid); + if (!packageName.IsEmpty()) { - CComPtr pStore; - pAppItem->BindToHandler(NULL,BHID_PropertyStore,IID_IPropertyStore,(void**)&pStore); - if (pStore) - { - CString packageName=GetPropertyStoreString(pStore,PKEY_MetroPackageName); - if (!packageName.IsEmpty()) - { - wchar_t command[1024]; - Sprintf(command,_countof(command),L"Remove-AppxPackage %s",packageName); - ShellExecute(NULL,L"open",L"powershell.exe",command,NULL,SW_HIDE); - } - } + wchar_t command[1024]; + Sprintf(command, _countof(command), L"Remove-AppxPackage %s", packageName); + ShellExecute(NULL, L"open", L"powershell.exe", command, NULL, SW_HIDE); } } @@ -381,3 +372,16 @@ bool IsEdgeDefaultBrowser( void ) } return false; } + +CString GetPackageFullName(const wchar_t* appId) +{ + CComPtr item; + if (SUCCEEDED(SHCreateItemInKnownFolder(FOLDERID_AppsFolder, 0, appId, IID_PPV_ARGS(&item)))) + { + CComPtr store; + if (SUCCEEDED(item->BindToHandler(nullptr, BHID_PropertyStore, IID_PPV_ARGS(&store)))) + return GetPropertyStoreString(store, PKEY_MetroPackageName); + } + + return {}; +} diff --git a/Src/StartMenu/StartMenuDLL/MetroLinkManager.h b/Src/StartMenu/StartMenuDLL/MetroLinkManager.h index e2b2a2c..83b4188 100644 --- a/Src/StartMenu/StartMenuDLL/MetroLinkManager.h +++ b/Src/StartMenu/StartMenuDLL/MetroLinkManager.h @@ -53,3 +53,6 @@ CComPtr GetMetroPinMenu( const wchar_t *appid ); // Determines if Edge is the default browser bool IsEdgeDefaultBrowser( void ); + +// Returns full package name for given App ID +CString GetPackageFullName(const wchar_t* appId);