使用 C#/DotNet 在 MacOS 文件浏览器中选择 .app 文件

Select .app Files in MacOS File Browser using C#/DotNet

提问人:MidnightCoffee 提问时间:6/2/2022 更新时间:6/4/2022 访问量:219

问:

我正在开发一个用 Unity3D 构建的 MacOS 应用程序。我正在使用本机文件浏览器插件打开本机 MacOS 文件对话框以选择文件。 为了生成 PDF,我的应用程序依赖于使用 Chromium 的 Headless/命令行功能。

在 Windows 上,我可以轻松获取包含的 Microsoft Edge 的路径,因为这是标准的,但在 Mac 上,除非我猜想并检查(我已经这样做了),否则没有办法保证 Mac 用户安装了基于 Chromium 的浏览器。

因此,我打算允许用户通过选择带有文件对话框的文件来手动设置路径。但是,即使我指定为有效的扩展名,它们仍然无法选择。.app.app

我认为这是某种特定于 MacOS 的限制或默认权限,尽管我在网上找不到太多相关信息。

使用 C#/DotNet 有什么方法可以根据需要允许这种行为吗?

有关更多信息:我只是使用命令行参数运行应用程序。 根据我搜索 Google Chrome 的实验(尽管 Edge 或 Opera 同样可用),我正在寻找的路径是: 因为大多数用户无法访问,所以我想我会自动进入并获取具有正确名称的二进制文件。System.Diagnostics.Process.Start()/Applications/ {{APP NAME}}.app/Contents/MacOS/{{APP NAME}}Contents

我知道我可以在我的应用程序中包含一些轻量级版本的 ChromeDriver,但我宁愿让所有内容尽可能独立,尤其是因为很多人已经安装了 Chrome(或 Opera、Edge 等)。挑战在于不是每个人都将它安装在同一个地方,因此我需要使其可定制。

任何想法或帮助将不胜感激! 谢谢!

C# macOS Unity-Game-Engine Chromium

评论


答:

0赞 MidnightCoffee 6/4/2022 #1

经过一些测试:似乎只有在 Unity 编辑器中运行时才会出现此限制。将应用程序内置到独立的 Mac 应用程序中后,文件对话框确实允许选择 .app 文件,并且它按预期工作。

不是这个问题的 100% 解决方案,但肯定会消除一些问题。