Handle more exceptions for UWP #1309

This commit is contained in:
bao-qian
2017-04-01 19:15:23 +01:00
parent cb2eebef40
commit 3554d9fda2

View File

@@ -146,7 +146,20 @@ namespace Wox.Plugin.Program.Programs
var support = Environment.OSVersion.Version.Major >= windows10.Major; var support = Environment.OSVersion.Version.Major >= windows10.Major;
if (support) 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; return applications;
} }
else else
@@ -157,17 +170,31 @@ namespace Wox.Plugin.Program.Programs
private static IEnumerable<Package> CurrentUserPackages() private static IEnumerable<Package> CurrentUserPackages()
{ {
var user = WindowsIdentity.GetCurrent().User; var u = WindowsIdentity.GetCurrent().User;
if (user != null) if (u != null)
{ {
var userSecurityId = user.Value; var id = u.Value;
var packageManager = new PackageManager(); var m = new PackageManager();
var packages = packageManager.FindPackagesForUser(userSecurityId); var ps = m.FindPackagesForUser(id);
packages = ps = ps.Where(p =>
packages.Where( {
p => !p.IsFramework && !p.IsDevelopmentMode && !string.IsNullOrEmpty(p.InstalledLocation.Path)); bool valid;
return packages; 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 else
{ {