Linux: `System.Diagnostics.ProcessStartInfo`: With `UseShellExecute = true`, a misleading exception is thrown when no helper utility (such as `xdg-open`) is present.
#96,565 opened on Jan 5, 2024
Repository metrics
- Stars
- (17,886 stars)
- PR merge metrics
- (Avg merge 12d 11h) (661 merged PRs in 30d)
Description
Description
On Linux distros, opening a document or folder path via UseShellExecute = true relies on external helper utilities; specifically, the following ones are looked for, via the Path environment variable, in order, with the first one getting used: xdg-open, gnome-open, kfmclient
In the absence of these helper utilities, an exception is thrown, which makes sense,
but the exception is misleading, as it reports the .FileName property value as nonexistent.
That is, the nonexistence of a helper utility is mistakenly reported as the the .FileName property value's nonexistence (even if the latter actually exists).
Reproduction Steps
On a Linux distro with none of the helper utilities present (if a helper utility is present, the call should open the current directory GUI shell's file manager):
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo { FileName = ".", UseShellExecute = true })
Expected behavior
An exception that indicates the absence of a required helper utility.
Actual behavior
E.g. when run from /tmp:
An error occurred trying to start process '.' with working directory '/tmp'. No such file or directory
Regression?
No response
Known Workarounds
No response
Configuration
- .NET 8.0.0
- CBL-Mariner/Linux 2.0
Other information
No response