From 3554d9fda205edddcbe6b2106fcd3253e39185ce Mon Sep 17 00:00:00 2001 From: bao-qian Date: Sat, 1 Apr 2017 19:15:23 +0100 Subject: [PATCH] Handle more exceptions for UWP #1309 --- Plugins/Wox.Plugin.Program/Programs/UWP.cs | 47 +++++++++++++++++----- 1 file changed, 37 insertions(+), 10 deletions(-) diff --git a/Plugins/Wox.Plugin.Program/Programs/UWP.cs b/Plugins/Wox.Plugin.Program/Programs/UWP.cs index 81c4b7a33a..bf58e46f94 100644 --- a/Plugins/Wox.Plugin.Program/Programs/UWP.cs +++ b/Plugins/Wox.Plugin.Program/Programs/UWP.cs @@ -146,7 +146,20 @@ namespace Wox.Plugin.Program.Programs var support = Environment.OSVersion.Version.Major >= windows10.Major; if (support) { - var applications = CurrentUserPackages().AsParallel().SelectMany(p => new UWP(p).Apps).ToArray(); + var applications = CurrentUserPackages().AsParallel().SelectMany(p => + { + UWP u; + try + { + u = new UWP(p); + } + catch (Exception e) + { + Log.Exception($"|UWP.All|Can't convert Package to UWP for <{p.Id.FullName}>:", e); + return new Application[] { }; + } + return u.Apps; + }).ToArray(); return applications; } else @@ -157,17 +170,31 @@ namespace Wox.Plugin.Program.Programs private static IEnumerable CurrentUserPackages() { - var user = WindowsIdentity.GetCurrent().User; + var u = WindowsIdentity.GetCurrent().User; - if (user != null) + if (u != null) { - var userSecurityId = user.Value; - var packageManager = new PackageManager(); - var packages = packageManager.FindPackagesForUser(userSecurityId); - packages = - packages.Where( - p => !p.IsFramework && !p.IsDevelopmentMode && !string.IsNullOrEmpty(p.InstalledLocation.Path)); - return packages; + var id = u.Value; + var m = new PackageManager(); + var ps = m.FindPackagesForUser(id); + ps = ps.Where(p => + { + bool valid; + try + { + var f = p.IsFramework; + var d = p.IsDevelopmentMode; + var path = p.InstalledLocation.Path; + valid = !f && !d && !string.IsNullOrEmpty(path); + } + catch (Exception e) + { + Log.Exception($"|UWP.CurrentUserPackages|Can't get package info for <{p.Id.FullName}>", e); + valid = false; + } + return valid; + }); + return ps; } else {