检测Windows Store是否可用

5
我的目标是建议用户从桌面应用程序安装应用商店版本的应用程序,但我需要知道用户是否可以这样做(例如,它的Windows 10+,并且商店可用)。
我可以轻松检测到Windows 10+。
问题在于,有许多SKU,如Windows Server和Windows LTSB,它们没有商店,但提供基本相同的API。
到目前为止,我尝试过:
- 尝试创建Windows.Management.Deployment.PackageManager的实例 - GetProductInfo函数
前者在没有商店的情况下在Windows Server上成功了。
后者目前足够使用,但需要手动检查所有非商店SKU,并且并不能真正解决问题,因为没有什么阻止Microsoft将Windows Store引入Windows 2019 LTSB。
实际上,更具体地说,我想知道当前用户是否可以从Windows Store安装桌面桥接应用程序。
1个回答

4
您可以使用PowerShell命令Get-AppxPackage来检查是否已安装Microsoft.StorePurchaseApp包。
首先,使用Package Manager Console安装System.Management.Automation.dll NuGet包:
PM> Install-Package System.Management.Automation.dll

然后使用这样的方法:

public static bool IsStoreAvailable()
{
    using (var shell = PowerShell.Create())
    {
        shell.AddScript("Get-AppxPackage -Name Microsoft.StorePurchaseApp");
        var result = shell.Invoke();
        return result.Any();
    }
}

这是我最终得到的代码:Package storePackage = packageManager.FindPackagesForUser( userSecurityId: string.Empty, packageFamilyName: "Microsoft.StorePurchaseApp_8wekyb3d8bbwe").FirstOrDefault(); return storePackage != null; - LOST
很好,你已经让它工作了,但是我不喜欢packageFamilyName中的随机部分...这很可能会出问题。 - huysentruitw
1
这不是随机的——它是 Microsoft 发布者 ID。如果发布者发生更改,PFN 也必须相应更改,因此这里没有额外的脆弱性。 - Peter Torr - MSFT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接