C#-检查Windows10上是否安装了UWP应用

时间:2019-01-25 16:54:23

标签: c# uwp

问题:使用C#如何检查UWP 10`上是否安装了Windows应用程序

可能的目标:我的真正动机是使用Microsoft.Office.Interopthis one进行交互的here开发VS2017的MS Office应用,{{ 3}}。但是office应用程序将首先检查是否已安装所需的UWP应用程序。

对于旧的Windows 32位和64位应用程序,我们可以检查是否使用各种方法(例如以下方法)安装了应用程序。我想知道Windows 10上的UWP是否有类似的东西:

private static bool IsSoftwareInstalled(string softwareName)
{
    var key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall") ??
              Registry.LocalMachine.OpenSubKey(
                  @"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall");

    if (key == null)
        return false;

    return key.GetSubKeyNames()
        .Select(keyName => key.OpenSubKey(keyName))
        .Select(subkey => subkey.GetValue("DisplayName") as string)
        .Any(displayName => displayName != null && displayName.Contains(softwareName));
}

然后使用if语句来调用它:

if (IsSoftwareInstalled("OpenSSL"))

2 个答案:

答案 0 :(得分:2)

您可以从Win32应用程序中调用PackageManager.FindPackageForUser API,以检查是否为当前用户安装了UWP。

https://docs.microsoft.com/en-us/uwp/api/windows.management.deployment.packagemanager.findpackageforuser

答案 1 :(得分:0)

因为我没有访问UWP PackageManager api的权限,所以实际上我只是做了一个简单的目录检查

var appPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Packages", "YourAppId");            

if (Directory.Exists(appPath))
{
    //exists
 }