Fix Cmdpal launch without admin mode - both runner and setting. (#39494)

* Change to path and args

* Fix both Setting launch and runner launch
This commit is contained in:
Gordon Lam
2025-05-16 04:11:57 -07:00
committed by GitHub
parent 75121ca7f3
commit 0e9c5a82dd
2 changed files with 13 additions and 10 deletions

View File

@@ -217,7 +217,9 @@ public:
CmdPal::m_enabled.store(true);
std::wstring packageName = L"Microsoft.CommandPalette";
std::wstring launchPath = L"explorer.exe x-cmdpal://background";
// Launch CmdPal as normal user using explorer
std::wstring launchPath = L"explorer.exe";
std::wstring launchArgs = L"x-cmdpal://background";
#ifdef IS_DEV_BRANDING
packageName = L"Microsoft.CommandPalette.Dev";
#endif
@@ -268,13 +270,13 @@ public:
if (!firstEnableCall)
{
Logger::trace("Not first attempt, try to launch");
LaunchApp(launchPath, L"", false /*no elevated*/, false /*error pop up*/);
LaunchApp(launchPath, launchArgs, false /*no elevated*/, false /*error pop up*/);
}
else
{
// If first time enable, do retry launch.
Logger::trace("First attempt, try to launch");
std::thread launchThread(&CmdPal::RetryLaunch, launchPath);
std::thread launchThread(&CmdPal::RetryLaunch, launchPath, launchArgs);
launchThread.detach();
}
@@ -289,14 +291,14 @@ public:
CmdPal::m_enabled.store(false);
}
static void RetryLaunch(std::wstring path)
static void RetryLaunch(std::wstring path, std::wstring cmdArgs)
{
const int base_delay_milliseconds = 1000;
int max_retry = 9; // 2**9 - 1 seconds. Control total wait time within 10 min.
int retry = 0;
do
{
auto launch_result = LaunchApp(path, L"", false, retry < max_retry);
auto launch_result = LaunchApp(path, cmdArgs, false, retry < max_retry);
if (launch_result)
{
Logger::info(L"CmdPal launched successfully after {} retries.", retry);

View File

@@ -34,7 +34,7 @@ namespace Microsoft.PowerToys.Settings.UI.Views
ViewModel.RefreshEnabledState();
}
private void LaunchApp(string appPath)
private void LaunchApp(string appPath, string args)
{
try
{
@@ -43,7 +43,7 @@ namespace Microsoft.PowerToys.Settings.UI.Views
var processStartInfo = new ProcessStartInfo
{
FileName = appPath,
Arguments = string.Empty,
Arguments = args,
WorkingDirectory = dir,
UseShellExecute = true,
Verb = "open",
@@ -64,9 +64,10 @@ namespace Microsoft.PowerToys.Settings.UI.Views
private void CmdPalSettingsDeeplink_Click(object sender, Microsoft.UI.Xaml.RoutedEventArgs e)
{
// Launch CmdPal settings window
string launchPath = "x-cmdpal://settings";
LaunchApp(launchPath);
// Launch CmdPal settings window as normal user using explorer
string launchPath = "explorer.exe";
string launchArgs = "x-cmdpal://settings";
LaunchApp(launchPath, launchArgs);
}
}
}