Я нашел подходящий способ, надеюсь, это может помочь кому-то еще.
В Windows 10 есть специальный скрытый объект оболочки, в котором перечислены все приложения (UWP и обычные), которые открываются в вот так:
- Win + R
- Поместите Shell: AppsFolder и выполните его.
Тогда вопрос состоит в том, чтобы получить список там программно и проверить что изменилось после установки.
Это достигается следующим образом (необходимо этот пакет nuget):
var appsFolderId = new Guid("{1e87508d-89c2-42f0-8a7e-645a0f50ca58}");
IKnownFolder appsFolder = KnownFolderHelper.FromKnownFolderId(appsFolderId);
foreach (var app in appsFolder)
{
Console.WriteLine($"{app.Name} {app.ParsingName}");
}
app.Name - имя приложения и app.ParsingName - это имя, которое можно использовать для открытия приложения с помощью этого:
System.Diagnostics.Process.Start("explorer.exe", @" shell:appsFolder\" + app.ParsingName);
При необходимости значок приложения можно получить с помощью этого свойства:
app.Thumbnail.ExtraLargeBitmapSource
Кредиты для этого ответа для решения.
Теперь вопрос сохранения текущего списка, установки нового приложения и проверки изменений в этом списке после. Также как предлагает ответ ; вы можете прослушивать изменения этого шеллобъекта, чтобы получать уведомления, когда изменение вступает в силу, с помощью:
ShellObjectWatcher watcher = new ShellObjectWatcher(appsFolder, false);
watcher.AllEvents += <Your_events_handler>;
watcher.Start();