From 67b94b4d60ada38c60d5063d268253539790dd99 Mon Sep 17 00:00:00 2001
From: 7ranceaddic7 <4062616+7ranceaddic7@users.noreply.github.com>
Date: Fri, 3 Jul 2026 12:52:46 -0700
Subject: [PATCH 1/2] Fix misleading "Installation options" label on
Update/Uninstall operation logs
UpdatePackageOperation and UninstallPackageOperation both logged their
options dump under the header "Installation options:", inherited from
InstallPackageOperation via copy-paste. Since InstallOptions.ToString()
already renders CustomParameters_Install/_Update/_Uninstall separately
by field name, this only affected the header text -- but it's actively
misleading: users configuring a package's "Custom Install Arguments"
field see that same value echoed under an "Installation options:"
banner during an update run, which reads as confirmation that the
install-time argument applies to updates too, even though it doesn't
(CustomParameters_Update is the field that actually gets appended for
update operations, per NpmPkgOperationHelper._getOperationParameters).
---
src/UniGetUI.PackageEngine.Operations/PackageOperations.cs | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/UniGetUI.PackageEngine.Operations/PackageOperations.cs b/src/UniGetUI.PackageEngine.Operations/PackageOperations.cs
index bc9ea2524b..ae369b13f7 100644
--- a/src/UniGetUI.PackageEngine.Operations/PackageOperations.cs
+++ b/src/UniGetUI.PackageEngine.Operations/PackageOperations.cs
@@ -436,7 +436,7 @@ protected override void Initialize()
+ Package.Id
+ " with Manager="
+ Package.Manager.Name
- + "\nInstallation options: "
+ + "\nUpdate options: "
+ Options.ToString()
+ "\nOverriden options: "
+ Package.OverridenOptions.ToString()
@@ -508,7 +508,7 @@ protected override void Initialize()
+ Package.Id
+ " with Manager="
+ Package.Manager.Name
- + "\nInstallation options: "
+ + "\nUninstall options: "
+ Options.ToString()
+ "\nOverriden options: "
+ Package.OverridenOptions.ToString();
From e5e5b42a5b9a5bdfa5b4e315ad9176cd88b292e9 Mon Sep 17 00:00:00 2001
From: 7ranceaddic7 <4062616+7ranceaddic7@users.noreply.github.com>
Date: Fri, 3 Jul 2026 13:27:27 -0700
Subject: [PATCH 2/2] Add hint and one-click copy for the three independent
CLI-argument fields
Custom install/update/uninstall arguments are three separate fields
with no indication that they're independent -- a user who fills in
"Custom install arguments" (the field most naturally reached for
first) has no signal that it won't be used for update or uninstall
operations, only to discover it later via a failed update.
This adds, on both the per-manager default-options panel and the
per-package install-options dialog:
- A short hint explaining the fields are independent
- A "Copy install arguments to update and uninstall" link for users
who do want the same flag applied everywhere, so they don't have to
retype it three times
---
src/Languages/lang_en.json | 2 ++
.../DialogPages/InstallOptionsViewModel.cs | 9 +++++++++
.../InstallOptionsPanelViewModel.cs | 12 +++++++++++
.../DialogPages/InstallOptionsControl.axaml | 13 ++++++++++++
.../SettingsPages/InstallOptionsPanel.axaml | 20 ++++++++++++++++++-
5 files changed, 55 insertions(+), 1 deletion(-)
diff --git a/src/Languages/lang_en.json b/src/Languages/lang_en.json
index 295507dc9e..8cb4693f04 100644
--- a/src/Languages/lang_en.json
+++ b/src/Languages/lang_en.json
@@ -112,6 +112,8 @@
"Custom install arguments:": "Custom install arguments:",
"Custom update arguments:": "Custom update arguments:",
"Custom uninstall arguments:": "Custom uninstall arguments:",
+ "These fields are independent: an argument set for Install won't apply to Update or Uninstall, and vice versa.": "These fields are independent: an argument set for Install won't apply to Update or Uninstall, and vice versa.",
+ "Copy install arguments to update and uninstall": "Copy install arguments to update and uninstall",
"Pre-install command:": "Pre-install command:",
"Post-install command:": "Post-install command:",
"Abort install if pre-install command fails": "Abort install if pre-install command fails",
diff --git a/src/UniGetUI.Avalonia/ViewModels/DialogPages/InstallOptionsViewModel.cs b/src/UniGetUI.Avalonia/ViewModels/DialogPages/InstallOptionsViewModel.cs
index 58f1d6bfbf..71c945376e 100644
--- a/src/UniGetUI.Avalonia/ViewModels/DialogPages/InstallOptionsViewModel.cs
+++ b/src/UniGetUI.Avalonia/ViewModels/DialogPages/InstallOptionsViewModel.cs
@@ -45,6 +45,8 @@ public partial class InstallOptionsViewModel : ObservableObject
public string ParamsInstallLabel { get; } = CoreTools.Translate("Custom install arguments:");
public string ParamsUpdateLabel { get; } = CoreTools.Translate("Custom update arguments:");
public string ParamsUninstallLabel { get; } = CoreTools.Translate("Custom uninstall arguments:");
+ public string CliArgsHintLabel { get; } = CoreTools.Translate("These fields are independent: an argument set for Install won't apply to Update or Uninstall, and vice versa.");
+ public string CopyInstallArgsLabel { get; } = CoreTools.Translate("Copy install arguments to update and uninstall");
public string PreInstallLabel { get; } = CoreTools.Translate("Pre-install command:");
public string PostInstallLabel { get; } = CoreTools.Translate("Post-install command:");
public string AbortInstallLabel { get; } = CoreTools.Translate("Abort install if pre-install command fails");
@@ -363,6 +365,13 @@ private void Proceed()
[RelayCommand]
private void ResetLocation() => LocationText = "";
+ [RelayCommand]
+ private void CopyInstallArgsToOthers()
+ {
+ ParamsUpdate = ParamsInstall;
+ ParamsUninstall = ParamsInstall;
+ }
+
/// Unlocks the options by turning off "follow default options" (matches WinUI).
[RelayCommand]
private void Unlock() => FollowGlobal = false;
diff --git a/src/UniGetUI.Avalonia/ViewModels/Pages/SettingsPages/InstallOptionsPanelViewModel.cs b/src/UniGetUI.Avalonia/ViewModels/Pages/SettingsPages/InstallOptionsPanelViewModel.cs
index 33a5bae1cd..9f145aa667 100644
--- a/src/UniGetUI.Avalonia/ViewModels/Pages/SettingsPages/InstallOptionsPanelViewModel.cs
+++ b/src/UniGetUI.Avalonia/ViewModels/Pages/SettingsPages/InstallOptionsPanelViewModel.cs
@@ -77,6 +77,8 @@ public partial class InstallOptionsPanelViewModel : ViewModelBase
public string InstallArgsLabel { get; } = CoreTools.Translate("Custom install arguments:");
public string UpdateArgsLabel { get; } = CoreTools.Translate("Custom update arguments:");
public string UninstallArgsLabel { get; } = CoreTools.Translate("Custom uninstall arguments:");
+ public string CliArgsHintLabel { get; } = CoreTools.Translate("These fields are independent: an argument set for Install won't apply to Update or Uninstall, and vice versa.");
+ public string CopyInstallArgsLabel { get; } = CoreTools.Translate("Copy install arguments to update and uninstall");
public string ResetLabel { get; } = CoreTools.Translate("Reset");
public string ApplyLabel { get; } = CoreTools.Translate("Apply");
public string CliDisabledLabel { get; } = CoreTools.Translate("For security reasons, custom command-line arguments are disabled by default. Go to UniGetUI security settings to change this.");
@@ -284,6 +286,16 @@ private void ResetLocation()
private void NavigateToAdministrator() =>
NavigateToAdministratorRequested?.Invoke(this, EventArgs.Empty);
+ // ── CLI args convenience ─────────────────────────────────────────────────
+
+ [RelayCommand]
+ private void CopyInstallArgsToOthers()
+ {
+ CustomUpdate = CustomInstall;
+ CustomUninstall = CustomInstall;
+ HasChanges = true;
+ }
+
// ── Mark changed ─────────────────────────────────────────────────────────
public void MarkChanged() => HasChanges = true;
diff --git a/src/UniGetUI.Avalonia/Views/DialogPages/InstallOptionsControl.axaml b/src/UniGetUI.Avalonia/Views/DialogPages/InstallOptionsControl.axaml
index 84d7301625..1a921642eb 100644
--- a/src/UniGetUI.Avalonia/Views/DialogPages/InstallOptionsControl.axaml
+++ b/src/UniGetUI.Avalonia/Views/DialogPages/InstallOptionsControl.axaml
@@ -259,6 +259,12 @@
Command="{Binding GoToSecuritySettingsCommand}"
HorizontalAlignment="Left" Padding="0" FontWeight="SemiBold"/>
+
+
+
+
diff --git a/src/UniGetUI.Avalonia/Views/Pages/SettingsPages/InstallOptionsPanel.axaml b/src/UniGetUI.Avalonia/Views/Pages/SettingsPages/InstallOptionsPanel.axaml
index afbca87738..81c0297304 100644
--- a/src/UniGetUI.Avalonia/Views/Pages/SettingsPages/InstallOptionsPanel.axaml
+++ b/src/UniGetUI.Avalonia/Views/Pages/SettingsPages/InstallOptionsPanel.axaml
@@ -159,11 +159,17 @@
+
+ Margin="0,4,0,0">
+
+