MacOS应用程序文件关联
macOS application file association
我已经尝试筛选信息已有一段时间了,并且我在确定仍然相关的问题上遇到了问题。似乎由于某种原因,该主题的信息比应该少的信息。
我正在处理用于MacOS的应用程序。我想将自定义文件扩展名与我的应用程序相关联。我希望用户能够双击其中一个文件并将应用程序打开。我很容易选择该应用程序打开文件,但是我无法弄清楚如何获取打开文件的文件名。
到目前为止,我唯一发现的是从AppleScript创建一个应用程序。然后,AppleScript可以解析参数并与他们调用主应用程序。这种方法有两个问题。
首先,如果用户更改并直接选择应用程序会发生什么?我认为这只是不起作用吗?有什么办法吗?
第二,我首先如何自动关联应用程序?我找到了有关cfbundletypeextensions的信息,但后来发现这被弃用了。我找到了一些有关UTI和发布服务的信息。如何将UTI添加到PLIST文件并运行LSRegister命令是有道理的。您将如何自动执行此操作?用户使用DMG安装应用程序,我可以在什么时候运行LSRegister命令?
将以下内容添加到您的Info.plist
中。它将告诉MacOS您的应用程序处理.foo
和.bar
文件。
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>CFBundleTypeExtensions</key>
<array>
<string>foo</string>
<string>bar</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>FileIcons.icns</string>
<key>CFBundleTypeMIMETypes</key>
<string>application/octet-stream</string>
<key>CFBundleTypeName</key>
<string>Something Unique Here</string>
<key>CFBundleTypeOSTypes</key>
<array>
<string>****</string>
</array>
</dict>
</array>
FileIcons.icns
应包含注册文件的图标文件。如果您不想创建文件图标,则可以将该字符串空白:
<key>CFBundleTypeIconFile</key>
<string></string>
CFBundleTypeMIMETypes
设置为上面的application/octet-stream
。这就是通用二进制数据的MIME类型。如果文件实际上具有适当的MIME类型,请使用这些。
一旦MacOS看到您的应用程序(例如,在下载时),它将自动知道可以打开.foo
和.bar
。您不需要运行任何外部任何东西。
最后,当用户双击.foo
或.bar
文件时,您的应用程序将由MacOS启动,并且它将接收"打开文件"事件。您需要处理。您的工作方式取决于开发应用程序的框架/语言。
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 当前不会命中断点。没有调试器目标代码类型的可执行代码与此文件关联
- 将 ETW 文件对象与 DiskIO 事件相关联
- MacOS应用程序文件关联
- 如何调用 ShellExecute 以使用 C++ 打开具有特定程序的文件,而无需关联相同的文件扩展名
- QML应用程序编译一个 *form.ui.qml文件,但忽略了关联的.qml文件
- 如何启动文件/目录/URL的关联应用程序
- 如何用java将文件与程序关联起来
- 文件文件夹关联或归属
- 试图捕获不平衡的分隔符.我需要显示与之关联的行号.遇到问题和我的测试文件
- C++程序需要一个文件关联
- 如何检查文件指针/描述符/句柄是否关联到同一个文件/管道/终端
- 文件类型以编程关联和文件位置(Windows)
- 如何打开程序与其文件扩展名关联的文件
- 查找与__declspec(dllexport)相关联的dll文件
- 来自两个不同文件的关联值
- tlb文件是否具有关联体系结构
- c++在类中创建ifstream/ofstream,关联预制文本文件
- 如何将从文件读取的字符串与枚举值相关联