diff --git a/src/UniGetUI.PackageEngine.Managers.WinGet/WinGet.cs b/src/UniGetUI.PackageEngine.Managers.WinGet/WinGet.cs index f75b610f44..5ccae01075 100644 --- a/src/UniGetUI.PackageEngine.Managers.WinGet/WinGet.cs +++ b/src/UniGetUI.PackageEngine.Managers.WinGet/WinGet.cs @@ -386,10 +386,15 @@ Func fileExists } internal IWinGetManagerHelper CreateCliHelperForSelectedCliTool() + { + return CreateCliHelperForSelectedCliTool(Status.ExecutablePath); + } + + internal IWinGetManagerHelper CreateCliHelperForSelectedCliTool(string executablePath) { return SelectedCliToolKind == WinGetCliToolKind.BundledPinget - ? new PingetCliHelper(this, Status.ExecutablePath) - : new WinGetCliHelper(this, Status.ExecutablePath); + ? new PingetCliHelper(this, executablePath) + : new WinGetCliHelper(this, executablePath); } protected override void _loadManagerExecutableFile( @@ -449,7 +454,7 @@ ex is WinGetComActivationException activationEx } Logger.Warn("WinGet will resort to using WinGetCliHelper()"); - WinGetHelper.Instance = CreateCliHelperForSelectedCliTool(); + WinGetHelper.Instance = CreateCliHelperForSelectedCliTool(path); } } diff --git a/src/UniGetUI.PackageEngine.Tests/WinGetManagerTests.cs b/src/UniGetUI.PackageEngine.Tests/WinGetManagerTests.cs index 2365d7e27c..479ca8194b 100644 --- a/src/UniGetUI.PackageEngine.Tests/WinGetManagerTests.cs +++ b/src/UniGetUI.PackageEngine.Tests/WinGetManagerTests.cs @@ -500,6 +500,25 @@ public void ShouldUseWinGetComApiNeverUsesComForBundledPingetCliTool() ); } + [Fact] + public void CreateCliHelperForSelectedCliToolUsesExplicitExecutablePath() + { + var manager = new WinGet(); + SetCliToolKind(manager, WinGetCliToolKind.SystemWinGet); + + IWinGetManagerHelper helper = manager.CreateCliHelperForSelectedCliTool( + @"C:\WindowsApps\winget.exe" + ); + + var pathField = typeof(WinGetCliHelper).GetField( + "_cliExecutablePath", + System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic + ); + + Assert.NotNull(pathField); + Assert.Equal(@"C:\WindowsApps\winget.exe", pathField.GetValue(helper)); + } + [Fact] public void NativeWinGetHelperUsesSystemCliFallbackForInstalledPackagesWhenCompositeCatalogFails() {