On Linux, if the downloaded programmes storage location doesn't preserve file permissions (such as a SMB mount) but instead gives every file 0777 (e.g. rwx for everyone), pressing the 'Play' button or double-clicking on a downloaded programme does not result in the download being played (but no error is shown).
After investigation, this appears to be caused by the Mono implementation of Process.Open - when a file has the execute bit set, Mono attempts to execute it and regards this as successful even though it couldn't be executed.
On Linux, if the downloaded programmes storage location doesn't preserve file permissions (such as a SMB mount) but instead gives every file 0777 (e.g. rwx for everyone), pressing the 'Play' button or double-clicking on a downloaded programme does not result in the download being played (but no error is shown).
After investigation, this appears to be caused by the Mono implementation of Process.Open - when a file has the execute bit set, Mono attempts to execute it and regards this as successful even though it couldn't be executed.
Interestingly, the dotnet core implementation has a comment and code which handles this exact scenario.