Check if package already registered

This commit is contained in:
Stefan Markovic 2022-06-08 17:07:37 +02:00
parent 558ff88d5e
commit 5af584fed4

View File

@ -48,6 +48,26 @@ namespace
dwlConditionMask);
}
bool IsPackageRegistered(std::wstring packageDisplayName)
{
using namespace winrt::Windows::Foundation;
using namespace winrt::Windows::Management::Deployment;
PackageManager packageManager;
for (auto const& package : packageManager.FindPackages())
{
const auto& packageFullName = std::wstring{ package.Id().FullName() };
if (packageFullName.contains(packageDisplayName))
{
return true;
}
}
return false;
}
bool RegisterSparsePackage(std::wstring externalLocation, std::wstring sparsePkgPath)
{
using namespace winrt::Windows::Foundation;
@ -274,7 +294,12 @@ public:
{
std::wstring path = get_module_folderpath(g_hInst);
std::wstring packageUri = path + L"\\PowerRenameContextMenuPackage.msix";
RegisterSparsePackage(path, packageUri);
std::wstring packageDisplayName{ L"PowerRenameContextMenu" };
if (!IsPackageRegistered(packageDisplayName))
{
RegisterSparsePackage(path, packageUri);
}
}
save_settings();