Skip to content
This repository was archived by the owner on Dec 5, 2023. It is now read-only.

Commit 77d36cf

Browse files
committed
bunch of updates to get declutter working
1 parent 859827b commit 77d36cf

26 files changed

Lines changed: 377 additions & 178 deletions

WereDev.Utils.Wu10Man.Core/Interfaces/IWindowsPackageManager.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ public interface IWindowsPackageManager
1111

1212
AppInfoExtended[] MergePackageInfo(IEnumerable<AppInfo> apps, IEnumerable<PackageInfo> packages);
1313

14-
void RemovePackage(string packageFullName);
14+
void RemovePackage(string packageName);
1515
}
1616
}

WereDev.Utils.Wu10Man.Core/Interfaces/Providers/IWindowsPackageProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ public interface IWindowsPackageProvider
66
{
77
PackageInfo[] ListInstalledPackages();
88

9-
void RemovePackage(string packageFullName);
9+
void RemovePackage(string packageName);
1010
}
1111
}

WereDev.Utils.Wu10Man.Core/Models/AppInfoExtended.cs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,12 @@
22
{
33
public class AppInfoExtended : AppInfo
44
{
5-
public AppInfoExtended()
6-
{
7-
8-
}
9-
105
public AppInfoExtended(AppInfo appInfo)
116
{
127
AppName = appInfo?.AppName;
138
PackageName = appInfo?.PackageName;
149
}
1510

16-
public string PackageFullName { get; set; }
17-
1811
public bool IsInstalled { get; set; }
1912

2013
public string IconPath { get; set; }

WereDev.Utils.Wu10Man.Core/Models/PackageInfo.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ public class PackageInfo
44
{
55
public string PackageName { get; set; }
66

7-
public string PackageFullName { get; set; }
8-
97
public string InstallLocation { get; set; }
108

119
public override string ToString()

WereDev.Utils.Wu10Man.Core/Services/WindowsPackageManager.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ public AppInfoExtended[] MergePackageInfo(IEnumerable<AppInfo> apps, IEnumerable
3737
var package = packages.FirstOrDefault(x => x.PackageName == app.PackageName);
3838
if (package != null)
3939
{
40-
appInfo.PackageFullName = package.PackageFullName;
4140
appInfo.IsInstalled = true;
4241
}
4342

@@ -47,9 +46,9 @@ public AppInfoExtended[] MergePackageInfo(IEnumerable<AppInfo> apps, IEnumerable
4746
return appInfos.ToArray();
4847
}
4948

50-
public void RemovePackage(string packageFullName)
49+
public void RemovePackage(string packageName)
5150
{
52-
_packageProvider.RemovePackage(packageFullName);
51+
_packageProvider.RemovePackage(packageName);
5352
}
5453
}
5554
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
using System.Collections.Generic;
2+
using System.Management.Automation;
3+
using WereDev.Utils.Wu10Man.Core.Interfaces.Providers;
4+
using WereDev.Utils.Wu10Man.Core.Models;
5+
6+
namespace WereDev.Utils.Wu10Man.Providers
7+
{
8+
public class PowerShellProvider : IWindowsPackageProvider
9+
{
10+
private const string CommandGetPackages = "Get-AppxPackage";
11+
private const string CommandRemovePackage = "Get-AppxPackage *{0}* | Remove-AppxPackage";
12+
private const string CommandRemoveProvisionedPackage = "Get-AppxProvisionedPackage -Online | where Displayname -EQ *{0}*| Remove-AppxProvisionedPackage -Online";
13+
14+
public PackageInfo[] ListInstalledPackages()
15+
{
16+
var packages = new List<PackageInfo>();
17+
using (var ps = PowerShell.Create())
18+
{
19+
ps.AddCommand(CommandGetPackages);
20+
var results = ps.Invoke();
21+
22+
foreach(var result in results)
23+
{
24+
dynamic appx = result.BaseObject;
25+
var package = new PackageInfo()
26+
{
27+
PackageName = appx.Name,
28+
};
29+
packages.Add(package);
30+
}
31+
}
32+
33+
return packages.ToArray();
34+
}
35+
36+
public void RemovePackage(string packageName)
37+
{
38+
using (var ps = PowerShell.Create())
39+
{
40+
ps.AddScript(string.Format(CommandRemovePackage, packageName));
41+
ps.AddScript(string.Format(CommandRemoveProvisionedPackage, packageName));
42+
var results = ps.Invoke();
43+
}
44+
}
45+
}
46+
}

WereDev.Utils.Wu10Man.Providers/WereDev.Utils.Wu10Man.Providers.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@
4040
</Reference>
4141
<Reference Include="System.Drawing" />
4242
<Reference Include="System.Management" />
43+
<Reference Include="System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
44+
<HintPath>..\packages\Microsoft.PowerShell.5.ReferenceAssemblies.1.1.0\lib\net4\System.Management.Automation.dll</HintPath>
45+
</Reference>
4346
<Reference Include="System.Net" />
4447
<Reference Include="System.Security" />
4548
<Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
@@ -70,6 +73,7 @@
7073
<ItemGroup>
7174
<Compile Include="FileIoProvider.cs" />
7275
<Compile Include="Models\AppManifest.cs" />
76+
<Compile Include="PowerShellProvider.cs" />
7377
<Compile Include="Properties\AssemblyInfo.cs" />
7478
<Compile Include="CredentialsProvider.cs" />
7579
<Compile Include="RegistryProvider.cs" />
Lines changed: 10 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System.Collections.Generic;
22
using System.IO;
33
using System.Linq;
4+
using System.Threading;
45
using System.Xml;
56
using System.Xml.Serialization;
67
using WereDev.Utils.Wu10Man.Core.Interfaces.Providers;
@@ -31,7 +32,6 @@ public PackageInfo[] ListInstalledPackages()
3132
var packageInfo = new PackageInfo
3233
{
3334
InstallLocation = package.InstalledLocation.Path,
34-
PackageFullName = package.Id.FullName,
3535
PackageName = package.Id.Name,
3636
};
3737
packageInfoList.Add(packageInfo);
@@ -40,46 +40,16 @@ public PackageInfo[] ListInstalledPackages()
4040
return packageInfoList.ToArray();
4141
}
4242

43-
public string GetLogoUrl(PackageInfo packageInfo)
43+
public void RemovePackage(string packageName)
4444
{
45-
return string.Empty;
46-
}
47-
48-
private string GetLogoUrl(string packagePath)
49-
{
50-
var manifest = GetAppManifest(packagePath);
51-
var manifestIconPath = Path.Combine(packagePath, manifest.Properties.Logo);
52-
53-
var iconDirectory = Path.GetDirectoryName(manifestIconPath);
54-
var iconFileName = Path.GetFileNameWithoutExtension(manifestIconPath) + ".scale-100." + Path.GetExtension(manifestIconPath);
55-
var iconPath = Path.Combine(iconDirectory, iconFileName);
56-
return iconPath;
57-
}
58-
59-
private Package GetAppManifest(string packagePath)
60-
{
61-
62-
63-
var manifestPath = Path.Combine(packagePath, "AppxManifest.xml");
64-
var xDoc = new XmlDocument();
65-
66-
xDoc.Load(manifestPath);
67-
68-
var xNodeReader = new XmlNodeReader(xDoc.DocumentElement);
69-
70-
var xmlSerializer = new XmlSerializer(typeof(Package));
71-
72-
var employeeData = xmlSerializer.Deserialize(xNodeReader);
73-
74-
Package deserializedEmployee = (Package)employeeData;
75-
76-
return deserializedEmployee;
77-
}
78-
79-
public void RemovePackage(string packageFullName)
80-
{
81-
var task = _packageManager.RemovePackageAsync(packageFullName, RemovalOptions.RemoveForAllUsers);
82-
var results = task.GetResults();
45+
var package = _packageManager.FindPackage(packageName);
46+
var installerInfo = package.GetAppInstallerInfo();
47+
48+
//var task = _packageManager.RemovePackageAsync(packageFullName, RemovalOptions.RemoveForAllUsers);
49+
//var completed = new AutoResetEvent(false);
50+
//task.Completed = (waitResult, status) => { completed.Set(); } ;
51+
//completed.WaitOne();
52+
//var result = task.GetResults();
8353
}
8454
}
8555
}

WereDev.Utils.Wu10Man.Providers/packages.config

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<packages>
3+
<package id="Microsoft.PowerShell.5.ReferenceAssemblies" version="1.1.0" targetFramework="net461" />
34
<package id="System.Diagnostics.EventLog" version="4.7.0" targetFramework="net461" />
5+
<package id="System.Management.Automation" version="7.0.1" targetFramework="net461" />
46
<package id="System.Security.AccessControl" version="4.7.0" targetFramework="net461" />
57
<package id="System.Security.Permissions" version="4.7.0" targetFramework="net461" />
68
<package id="System.Security.Principal.Windows" version="4.7.0" targetFramework="net461" />

Wu10Man/App.xaml.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ private void RegisterDependencies()
7070
builder.RegisterType<UserProvider>().As<IUserProvider>();
7171
builder.RegisterType<WindowsApiAdapter>().As<IWindowsApiProvider>();
7272
builder.RegisterType<WindowsServiceProviderFactory>().As<IWindowsServiceProviderFactory>();
73-
builder.RegisterType<WindowsPackageProvider>().As<IWindowsPackageProvider>();
73+
builder.RegisterType<PowerShellProvider>().As<IWindowsPackageProvider>();
7474

7575
// Services
7676
builder.RegisterType<FileManager>().As<IFileManager>();
@@ -93,7 +93,7 @@ private void OnDispatcherUnhandledException(object sender, System.Windows.Thread
9393
private void WriteStartupLogs()
9494
{
9595
var appVersion = GetType().Assembly.GetName().Version;
96-
_logWriter.LogInfo($"Application version: v{appVersion.ToString()}");
96+
_logWriter.LogInfo($"Application version: v{appVersion}");
9797

9898
var registryEditor = DependencyManager.Resolve<IRegistryEditor>();
9999
_logWriter.LogInfo(EnvironmentVersionHelper.GetWindowsVersion(registryEditor));

0 commit comments

Comments
 (0)