Mac:如何分配要使用我的 java .app 应用程序打开的文件扩展名?
Posted
技术标签:
【中文标题】Mac:如何分配要使用我的 java .app 应用程序打开的文件扩展名?【英文标题】:Mac: How to assign a file extension to be opened with my java .app application? 【发布时间】:2011-10-31 21:27:19 【问题描述】:我创建了一个 Java 应用程序并从中创建了一个 Mac .app 文件,以便在 Mac OS X 上简单地运行。该应用程序可以创建特殊的项目文件并使用扩展名 *.ksdi 保存它们,以便用户可以轻松地运行这些项目文件并编辑它们。
我想做的是让在他的 Mac 上安装应用程序的用户能够双击那些 *.ksdi 文件以自动运行程序并自动加载项目文件。我如何在 Mac 中做到这一点?
我可以通过脚本或类似的方式为我的 Mac 程序分配扩展名,这样用户就不必手动为程序分配扩展名了吗?
更新:试用解决方案:
我在另一篇文章中读到我应该在 *.plist 文件中添加一个密钥来完成此操作,因此我将其添加到其中:
<plist>
<dict>
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSIsAppleDefaultForType</key>
<true/>
<key>LSItemContentTypes</key>
<array>
<string>public.ksdi</string>
</array>
</dict>
</array>
</dict>
</plist>
我保存了 plist 文件,但我不知道如何激活它! 我已经运行了应用程序,重新启动了我的 mac,但是当双击任何 ksdi 文件时,它仍然无法使用程序打开它...有什么帮助吗?
【问题讨论】:
见***.com/questions/1575190/… How to associate file type with MacOS X App without launching it first?的可能重复 谢谢大家,但这些问题没有明确的答案。我应该在 *.plist 文件中添加一个属性来完成这个还是什么? How to associate file type with MacOS X App without launching it first?的可能重复 【参考方案1】:我使用Install4J 来做这件事,它们真的很容易。
(顺便说一句,我与 Install4j 或公司无关)。
【讨论】:
一个笔记,我输出到dmg,他们可能支持.app,我不确定。【参考方案2】:根据“exact duplicate”问题之一。
Application Registration
用户系统上所有可用的应用程序都必须注册到 让他们知道 Launch Services 并复制他们的文档绑定和 其他信息进入其数据库。通常不需要 明确地执行此任务,因为各种实用程序和 内置在 Mac OS X 系统软件中的服务会处理它 自动:
内置后台工具,在系统启动或新系统启动时运行 用户登录后,自动搜索应用程序文件夹 系统、网络、本地和用户域,并注册任何新的 它在那里找到的应用程序。 (此操作类似于 在早期版本的 Mac OS 中“重建桌面”。) Finder 当它意识到它们时自动注册所有应用程序, 例如当它们被拖到用户的磁盘上或当用户 导航到包含它们的文件夹。当用户尝试打开 在该文件中找不到首选申请的文件 启动服务数据库,Finder 会显示一个对话框询问用户 选择用于打开文档的应用程序。那么它 在启动之前注册该应用程序。
尽管有这些自动注册实用程序,但有时可能 必须使用 Launch 显式注册应用程序 服务。例如,虽然鼓励开发者打包 他们的应用程序,以便他们可以通过简单地拖动安装 它们到用户的磁盘上,某些应用程序可能需要更多 精心制作的自定义安装软件。在这种情况下,安装程序 应该调用启动服务注册函数之一 LSRegisterFSRef 或 LSRegisterURL 来注册应用程序 明确的。
【讨论】:
如何注册我的应用程序,如第一行所述?我不想使用安装程序,所以我可以注册我的应用程序 + 使用我的问题中指定的 plist 键,一切都会正常吗? 阅读我的回答中提供的链接中的所有说明 Jarrod ... 这真的很有帮助。非常感谢。以上是关于Mac:如何分配要使用我的 java .app 应用程序打开的文件扩展名?的主要内容,如果未能解决你的问题,请参考以下文章
如何在我的 Arduino Uno (Mac OSX) 上保持串行地址一致?