如何确定字符串是否是已安装的UWP应用程序的AUMID?

时间:2017-08-29 20:08:12

标签: c# uwp

是否有.Net库用于测试字符串是否为已安装的UWP应用程序的AUMID?

例如,如果用户输入

Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge

如何确保实际安装了此AUMID的UWP应用程序?

1 个答案:

答案 0 :(得分:3)

嗯,UWP的AUMID格式为 FamilyName!AppID ,例如记录为here

要确定给定字符串是否为已安装的UWP应用程序的AUMID,您必须与之进行比较。您可以构建所有UWP应用程序AUMID的列表,并查看该字符串是否是其中之一,或者您可以在感叹号上拆分字符串,找到具有给定系列名称的包,如果包存在,请查看它是否具有具有给定应用程序ID的应用程序。

执行这些操作的API是Windows.Management.Deployment.PackageManager类。不幸的是,在枚举包中的应用程序时,我们没有获取应用程序ID。仅在SDK的10.0.16257.0版中,Windows.ApplicationModel.Core.AppListEntry类具有AppUserModelId属性。如果没有它,你似乎必须自己查看包装清单。

当然,在PowerShell中要容易得多,因为它有一个cmdlet可以以对象形式获取包清单。 Microsoft有此示例生成所有UWP应用程序AUMID:

$installedapps = get-AppxPackage

$aumidList = @()
foreach ($app in $installedapps)
{
    foreach ($id in (Get-AppxPackageManifest $app).package.applications.application.id)
    {
        $aumidList += $app.packagefamilyname + "!" + $id
    }
}

$aumidList

(来自:Find the Application User Model ID of an installed app

现在看看你的字符串是否在列表中。