Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add OverridenInstallationOptions to Packages #2557

Merged
merged 17 commits into from
Aug 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
17e8c40
Add base OverridenInstallationOptions
marticliment Jul 30, 2024
2df08ee
Remove unneeded imports
marticliment Jul 30, 2024
e84b7fd
Merge branch 'main' into overriden-installation-options
marticliment Jul 31, 2024
153d994
Merge branch 'main' into overriden-installation-options
marticliment Jul 31, 2024
e339e8b
Merge branch 'main' into overriden-installation-options
marticliment Jul 31, 2024
96ff932
Merge branch 'main' into overriden-installation-options
marticliment Jul 31, 2024
02825f2
Merge branch 'main' into overriden-installation-options
marticliment Jul 31, 2024
2879b08
Merge branch 'main' into overriden-installation-options
marticliment Jul 31, 2024
4018515
Merge branch 'main' into overriden-installation-options
marticliment Jul 31, 2024
ab69734
Begin adding OverridenInstallationOptions
marticliment Aug 3, 2024
5f5389a
Fix code page not being loaded properly (fix #2659)
marticliment Aug 28, 2024
0f35edc
Merge branch 'main' into overriden-installation-options
marticliment Aug 28, 2024
063de7c
Improvements to how WinGet handles package scopes
marticliment Aug 28, 2024
118b9c6
Prevent packages from showing greyed out in the package lists (fix #2…
marticliment Aug 28, 2024
7d34631
Improve how canceling operations affects the UI Controls
marticliment Aug 28, 2024
a21150e
Do not create orphaned processes, improve lifecycle of Process instan…
marticliment Aug 28, 2024
3b16792
Simplification of properties, user is warned when an operation has be…
marticliment Aug 28, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using ExternalLibraries.Pickers.Guids;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices;
using ExternalLibraries.Pickers.Guids;

namespace ExternalLibraries.Pickers.Classes;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using ExternalLibraries.Pickers.Guids;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices;
using ExternalLibraries.Pickers.Guids;

namespace ExternalLibraries.Pickers.Classes;

Expand Down
4 changes: 2 additions & 2 deletions src/ExternalLibraries.FilePickers/Classes/Helper.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using ExternalLibraries.Pickers.Enums;
using System.Runtime.InteropServices;
using ExternalLibraries.Pickers.Enums;
using ExternalLibraries.Pickers.Interfaces;
using ExternalLibraries.Pickers.Structures;
using System.Runtime.InteropServices;

namespace ExternalLibraries.Pickers.Classes;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using ExternalLibraries.Pickers.Classes;
using System.Runtime.InteropServices;
using ExternalLibraries.Pickers.Classes;
using ExternalLibraries.Pickers.Guids;
using System.Runtime.InteropServices;

namespace ExternalLibraries.Pickers.Interfaces;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using ExternalLibraries.Pickers.Classes;
using System.Runtime.InteropServices;
using ExternalLibraries.Pickers.Classes;
using ExternalLibraries.Pickers.Guids;
using System.Runtime.InteropServices;

namespace ExternalLibraries.Pickers.Interfaces;

Expand Down
6 changes: 3 additions & 3 deletions src/ExternalLibraries.FilePickers/Interfaces/IFileDialog.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
using ExternalLibraries.Pickers.Enums;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using ExternalLibraries.Pickers.Enums;
using ExternalLibraries.Pickers.Guids;
using ExternalLibraries.Pickers.Structures;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

namespace ExternalLibraries.Pickers.Interfaces;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using ExternalLibraries.Pickers.Enums;
using ExternalLibraries.Pickers.Guids;
using System.Runtime.CompilerServices;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using ExternalLibraries.Pickers.Enums;
using ExternalLibraries.Pickers.Guids;

namespace ExternalLibraries.Pickers.Interfaces;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using ExternalLibraries.Pickers.Guids;
using ExternalLibraries.Pickers.Structures;
using System.Runtime.CompilerServices;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using ExternalLibraries.Pickers.Guids;
using ExternalLibraries.Pickers.Structures;

namespace ExternalLibraries.Pickers.Interfaces;

Expand Down
4 changes: 2 additions & 2 deletions src/ExternalLibraries.FilePickers/Interfaces/IModalWindow.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using ExternalLibraries.Pickers.Guids;
using System.Runtime.CompilerServices;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using ExternalLibraries.Pickers.Guids;

namespace ExternalLibraries.Pickers.Interfaces;

Expand Down
6 changes: 3 additions & 3 deletions src/ExternalLibraries.FilePickers/Interfaces/IShellItem.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using ExternalLibraries.Pickers.Enums;
using ExternalLibraries.Pickers.Guids;
using System.Runtime.CompilerServices;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using ExternalLibraries.Pickers.Enums;
using ExternalLibraries.Pickers.Guids;

namespace ExternalLibraries.Pickers.Interfaces;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
using ExternalLibraries.Pickers.Enums;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using ExternalLibraries.Pickers.Enums;
using ExternalLibraries.Pickers.Guids;
using ExternalLibraries.Pickers.Structures;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

namespace ExternalLibraries.Pickers.Interfaces;

Expand Down
2 changes: 1 addition & 1 deletion src/UniGetUI.Core.LanguageEngine/LanguageEngine.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using Jeffijoe.MessageFormat;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.Text.Json.Nodes;
using Jeffijoe.MessageFormat;
using UniGetUI.Core.Data;
using UniGetUI.Core.Logging;
using UniGetUI.Core.SettingsEngine;
Expand Down
2 changes: 1 addition & 1 deletion src/UniGetUI.Interface.BackgroundApi/BackgroundApi.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using System.Text;
using Nancy;
using Nancy.Hosting.Self;
using System.Text;
using UniGetUI.Core.Data;
using UniGetUI.Core.Logging;
using UniGetUI.Core.SettingsEngine;
Expand Down
5 changes: 2 additions & 3 deletions src/UniGetUI.PAckageEngine.Interfaces/IPackage.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using System.ComponentModel;
using UniGetUI.Interface.Enums;
using UniGetUI.PackageEngine.Classes.Serializable;
using UniGetUI.PackageEngine.Enums;
using UniGetUI.PackageEngine.Structs;

namespace UniGetUI.PackageEngine.Interfaces
{
Expand All @@ -19,8 +19,7 @@ public interface IPackage : INotifyPropertyChanged, IEquatable<IPackage>
public IPackageManager Manager { get; }
public string NewVersion { get; }
public bool IsUpgradable { get; }
public PackageScope Scope { get; set; }
public string SourceAsString { get; }
public ref OverridenInstallationOptions OverridenOptions { get; }
public string AutomationName { get; }

/// <summary>
Expand Down
2 changes: 0 additions & 2 deletions src/UniGetUI.PAckageEngine.Interfaces/IPackageManager.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using System.Diagnostics;
using UniGetUI.PackageEngine.Classes.Manager.ManagerHelpers;
using UniGetUI.PackageEngine.Enums;
using UniGetUI.PackageEngine.Interfaces.ManagerProviders;
using UniGetUI.PackageEngine.ManagerClasses.Classes;
using UniGetUI.PackageEngine.ManagerClasses.Manager;
Expand Down
2 changes: 1 addition & 1 deletion src/UniGetUI.PAckageEngine.Interfaces/ManagerProperties.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using UniGetUI.PackageEngine.Interfaces;
using UniGetUI.Interface.Enums;
using UniGetUI.PackageEngine.Interfaces;

namespace UniGetUI.PackageEngine.ManagerClasses.Manager
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ OperationType operation
/// </summary>
public abstract OperationVeredict GetOperationResult(
IPackage package,
IInstallationOptions options,
OperationType operation,
IEnumerable<string> processOutput,
int returnCode
Expand Down
3 changes: 2 additions & 1 deletion src/UniGetUI.PackageEngine.Enums/Enums.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ public enum OperationVeredict
{
Succeeded,
Failed,
Canceled,
RestartRequired,
AutoRetry,
}
Expand All @@ -40,7 +41,7 @@ public enum OperationStatus
Running,
Succeeded,
Failed,
Cancelled
Canceled
}

public enum OperationType
Expand Down
14 changes: 14 additions & 0 deletions src/UniGetUI.PackageEngine.Enums/OverridenInstallationOptions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
using UniGetUI.PackageEngine.Enums;

namespace UniGetUI.PackageEngine.Structs;
public struct OverridenInstallationOptions
{
public PackageScope? Scope;
public bool? RunAsAdministrator;

public OverridenInstallationOptions(PackageScope? scope = null, bool? runAsAdministrator = null)
{
Scope = scope;
RunAsAdministrator = runAsAdministrator;
}
}
8 changes: 3 additions & 5 deletions src/UniGetUI.PackageEngine.Managers.Chocolatey/Chocolatey.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,20 @@
using UniGetUI.Core.Logging;
using UniGetUI.Core.SettingsEngine;
using UniGetUI.Core.Tools;
using UniGetUI.PackageEngine.Classes.Manager;
using UniGetUI.Interface.Enums;
using UniGetUI.PackageEngine.Classes.Manager;
using UniGetUI.PackageEngine.Classes.Manager.ManagerHelpers;
using UniGetUI.PackageEngine.Enums;
using UniGetUI.PackageEngine.Interfaces;
using UniGetUI.PackageEngine.ManagerClasses.Classes;
using UniGetUI.PackageEngine.ManagerClasses.Manager;
using UniGetUI.PackageEngine.Managers.Chocolatey;
using UniGetUI.PackageEngine.Managers.PowerShellManager;
using UniGetUI.PackageEngine.PackageClasses;
using UniGetUI.PackageEngine.ManagerClasses.Classes;

namespace UniGetUI.PackageEngine.Managers.ChocolateyManager
{
public class Chocolatey : BaseNuGet
{
public static new string[] FALSE_PACKAGE_NAMES = [""];
public static new string[] FALSE_PACKAGE_IDS = ["Directory", "", "Did", "Features?", "Validation", "-", "being", "It", "Error", "L'accs", "Maximum", "This", "Output is package name ", "operable", "Invalid"];
public static new string[] FALSE_PACKAGE_VERSIONS = ["", "Did", "Features?", "Validation", "-", "being", "It", "Error", "L'accs", "Maximum", "This", "packages", "current version", "installed version", "is", "program", "validations", "argument", "no"];

Expand Down Expand Up @@ -63,7 +61,7 @@ public Chocolatey()
PackageDetailsProvider = new ChocolateyDetailsProvider(this);
OperationProvider = new ChocolateyOperationProvider(this);
}

protected override async Task<Package[]> GetAvailableUpdates_UnSafe()
{
Process p = new()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using UniGetUI.PackageEngine.Classes.Manager.BaseProviders;
using UniGetUI.PackageEngine.Enums;
using UniGetUI.PackageEngine.Interfaces;
using UniGetUI.PackageEngine.Managers.ChocolateyManager;
using UniGetUI.PackageEngine.PackageClasses;

namespace UniGetUI.PackageEngine.Managers.ChocolateyManager;
internal sealed class ChocolateyOperationProvider : BaseOperationProvider<Chocolatey>
Expand All @@ -28,7 +21,7 @@ public override IEnumerable<string> GetOperationParameters(
}];
parameters.AddRange([package.Id, "-y"]);

if (options.CustomParameters is not null)
if (options.CustomParameters.Count > 0)
parameters.AddRange(options.CustomParameters);

if (options.InteractiveInstallation)
Expand Down Expand Up @@ -56,7 +49,6 @@ public override IEnumerable<string> GetOperationParameters(

public override OperationVeredict GetOperationResult(
IPackage package,
IInstallationOptions options,
OperationType operation,
IEnumerable<string> processOutput,
int returnCode)
Expand All @@ -73,12 +65,12 @@ public override OperationVeredict GetOperationResult(


string output_string = string.Join("\n", processOutput);
if (!options.RunAsAdministrator &&
if (!package.OverridenOptions.RunAsAdministrator != true &&
(output_string.Contains("Run as administrator")
|| output_string.Contains("The requested operation requires elevation")
|| output_string.Contains("ERROR: Exception calling \"CreateDirectory\" with \"1\" argument(s): \"Access to the path")) )
{
options.RunAsAdministrator = true;
package.OverridenOptions.RunAsAdministrator = true;
return OperationVeredict.AutoRetry;
}

Expand Down
30 changes: 22 additions & 8 deletions src/UniGetUI.PackageEngine.Managers.Dotnet/DotNet.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,21 @@
using System.Runtime.InteropServices;
using System.Text.RegularExpressions;
using UniGetUI.Core.Tools;
using UniGetUI.PackageEngine.Classes.Manager;
using UniGetUI.Interface.Enums;
using UniGetUI.PackageEngine.Classes.Manager;
using UniGetUI.PackageEngine.Classes.Manager.Classes;
using UniGetUI.PackageEngine.Classes.Manager.ManagerHelpers;
using UniGetUI.PackageEngine.Enums;
using UniGetUI.PackageEngine.Interfaces;
using UniGetUI.PackageEngine.ManagerClasses.Classes;
using UniGetUI.PackageEngine.ManagerClasses.Manager;
using UniGetUI.PackageEngine.Managers.PowerShellManager;
using UniGetUI.PackageEngine.PackageClasses;
using UniGetUI.PackageEngine.ManagerClasses.Classes;
using UniGetUI.PackageEngine.Structs;

namespace UniGetUI.PackageEngine.Managers.DotNetManager
{
public class DotNet : BaseNuGet
{
public static new string[] FALSE_PACKAGE_NAMES = [""];
public static new string[] FALSE_PACKAGE_IDS = [""];
public static new string[] FALSE_PACKAGE_VERSIONS = [""];

Expand Down Expand Up @@ -140,7 +139,15 @@ protected override async Task<Package[]> GetAvailableUpdates_UnSafe()
continue;
}

Packages.Add(new Package(CoreTools.FormatAsName(elements[0]), elements[0], elements[1], elements[2], DefaultSource, this, PackageScope.Global));
Packages.Add(new Package(
CoreTools.FormatAsName(elements[0]),
elements[0],
elements[1],
elements[2],
DefaultSource,
this,
new(PackageScope.Global)
));
}
}
logger.AddToStdErr(await p.StandardError.ReadToEndAsync());
Expand All @@ -153,14 +160,14 @@ protected override async Task<Package[]> GetAvailableUpdates_UnSafe()
protected override async Task<Package[]> GetInstalledPackages_UnSafe()
{
List<Package> Packages = [];
foreach (PackageScope scope in new PackageScope[] { PackageScope.Local, PackageScope.Global })
foreach (var options in new OverridenInstallationOptions[] { new(PackageScope.Local), new(PackageScope.Global) })
{
Process p = new()
{
StartInfo = new ProcessStartInfo
{
FileName = Status.ExecutablePath,
Arguments = Properties.ExecutableCallArgs + " list" + (scope == PackageScope.Global ? " --global" : ""),
Arguments = Properties.ExecutableCallArgs + " list" + (options.Scope == PackageScope.Global ? " --global" : ""),
RedirectStandardOutput = true,
RedirectStandardError = true,
UseShellExecute = false,
Expand Down Expand Up @@ -202,7 +209,14 @@ protected override async Task<Package[]> GetInstalledPackages_UnSafe()
continue;
}

Packages.Add(new Package(CoreTools.FormatAsName(elements[0]), elements[0], elements[1], DefaultSource, this, scope));
Packages.Add(new Package(
CoreTools.FormatAsName(elements[0]),
elements[0],
elements[1],
DefaultSource,
this,
options
));
}
}
logger.AddToStdErr(await p.StandardError.ReadToEndAsync());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using UniGetUI.PackageEngine.Classes.Manager.BaseProviders;
using UniGetUI.PackageEngine.Enums;
using UniGetUI.PackageEngine.Interfaces;
using UniGetUI.PackageEngine.Managers.DotNetManager;
using UniGetUI.PackageEngine.PackageClasses;
using Windows.ApplicationModel.Appointments;

namespace UniGetUI.PackageEngine.Managers.DotNetManager;
internal sealed class DotNetOperationProvider : BaseOperationProvider<DotNet>
Expand All @@ -35,7 +27,8 @@ public override IEnumerable<string> GetOperationParameters(
if (options.CustomInstallLocation != "")
parameters.AddRange(["--tool-path", "\"" + options.CustomInstallLocation + "\""]);

if (options.InstallationScope == PackageScope.Global || (options.InstallationScope is null && package.Scope == PackageScope.Global))
if(package.OverridenOptions.Scope == PackageScope.Global ||
(package.OverridenOptions.Scope is null && options.InstallationScope == PackageScope.Global))
parameters.Add("--global");

if (operation is OperationType.Install or OperationType.Update)
Expand All @@ -55,7 +48,6 @@ public override IEnumerable<string> GetOperationParameters(

public override OperationVeredict GetOperationResult(
IPackage package,
IInstallationOptions options,
OperationType operation,
IEnumerable<string> processOutput,
int returnCode)
Expand Down
Loading