Add working folder and minimized launch options
This commit is contained in:
@@ -180,10 +180,12 @@ public sealed class LauncherController : IDisposable
|
||||
Type = item.Type,
|
||||
Target = item.Target,
|
||||
Arguments = item.Arguments,
|
||||
WorkingFolder = item.WorkingFolder,
|
||||
IconPath = item.IconPath,
|
||||
IsFavorite = false,
|
||||
IsDisabled = false,
|
||||
RunAsAdmin = item.RunAsAdmin,
|
||||
StartMinimized = item.StartMinimized,
|
||||
DisplayMode = item.DisplayMode,
|
||||
Children = []
|
||||
};
|
||||
@@ -278,6 +280,7 @@ public sealed class LauncherController : IDisposable
|
||||
string target = Environment.ExpandEnvironmentVariables(item.Target);
|
||||
bool runAsAdmin = item.RunAsAdmin && CanRunAsAdmin(item.Type);
|
||||
string launchTarget = runAsAdmin ? ResolveExecutableTarget(target) : target;
|
||||
string workingDirectory = GetWorkingDirectory(item, target);
|
||||
|
||||
try
|
||||
{
|
||||
@@ -286,7 +289,7 @@ public sealed class LauncherController : IDisposable
|
||||
FileName = launchTarget,
|
||||
Arguments = item.Arguments ?? "",
|
||||
UseShellExecute = true,
|
||||
WorkingDirectory = Directory.Exists(target) ? target : ConfigService.AppFolder
|
||||
WorkingDirectory = workingDirectory
|
||||
};
|
||||
|
||||
if (runAsAdmin)
|
||||
@@ -294,6 +297,11 @@ public sealed class LauncherController : IDisposable
|
||||
startInfo.Verb = "runas";
|
||||
}
|
||||
|
||||
if (item.StartMinimized && CanUseLaunchOptions(item.Type))
|
||||
{
|
||||
startInfo.WindowStyle = ProcessWindowStyle.Minimized;
|
||||
}
|
||||
|
||||
Process.Start(startInfo);
|
||||
return true;
|
||||
}
|
||||
@@ -309,6 +317,25 @@ public sealed class LauncherController : IDisposable
|
||||
return itemType is LauncherItemType.App or LauncherItemType.File;
|
||||
}
|
||||
|
||||
public static bool CanUseLaunchOptions(LauncherItemType itemType)
|
||||
{
|
||||
return itemType is LauncherItemType.App or LauncherItemType.File;
|
||||
}
|
||||
|
||||
private static string GetWorkingDirectory(LauncherItem item, string target)
|
||||
{
|
||||
if (CanUseLaunchOptions(item.Type) && !string.IsNullOrWhiteSpace(item.WorkingFolder))
|
||||
{
|
||||
string configuredFolder = Environment.ExpandEnvironmentVariables(item.WorkingFolder.Trim());
|
||||
if (Directory.Exists(configuredFolder))
|
||||
{
|
||||
return configuredFolder;
|
||||
}
|
||||
}
|
||||
|
||||
return Directory.Exists(target) ? target : ConfigService.AppFolder;
|
||||
}
|
||||
|
||||
private static string ResolveExecutableTarget(string target)
|
||||
{
|
||||
if (Path.IsPathRooted(target) || Path.GetDirectoryName(target) is { Length: > 0 })
|
||||
|
||||
Reference in New Issue
Block a user