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">
+
+
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();