存档

2021年1月 的存档

判断某个 UWP 程序是否已经安装

2021年1月20日 没有评论

在一些代码逻辑里,经常需要判断指定的 UWP程序是否已经安装,其实微软已经提供了相应的API了,无论是Win32还是原生的 UWP程序都可以直接使用,这就是 PackageManager,其文档地址见这里

但是这个类,微软给添加了一个标记 [Windows.Foundation.Metadata.WebHostHidden],所以如果是网页里就无法调用了。为了规避掉这个问题,发现了一个类似hack 的方式。

就是使用 QueryUriSupportAsync 方法,向请求的UWP程序发送一个不存在的协议字符串,然后检查其返回值。返回的是一个枚举类型,也就是说,如果是 0(已安装)或者3(不支持该协议),就表明这个程序对于当前用户来说是已安装的。

下面是一段 js 的调用示例代码:

static queryUriSupport(uri, packageName) {
    return Windows.System.Launcher.queryUriSupportAsync(
        new Windows.Foundation.Uri(uri),
        0,
        packageName
    );
}

简单、暴力、直接,恰好解决了网页里的权限问题。

分类: 日常 标签: