OS-X应用程序包的行为

时间:2013-01-25 20:46:36

标签: macos executable osx-mountain-lion nsbundle

如何在应用程序包内部影响二进制可执行文件的运行方式?

为了解释,我为Mountain Lion编译了Emacs。这会生成一个二进制可执行文件,以及一个应用程序包Emacs.app,它包含完全相同的二进制文件(相同内容,根据diff)以及其他资源。

如果我从终端(或查找程序)运行二进制文件:

  • Emacs启动,正确处理我的init文件并且看起来不错。
  • 但应用程序菜单仍然显示“终端”和
  • 键盘输入到终端而不是Emacs。
  • 红色交通灯按钮也被发送到Emacs(Emacs表示没有任何东西可以保存),但不会终止该过程。

相反,如果我运行Emacs.app,Emacs会按预期运行。有人可以帮我解释这个差异吗?

1 个答案:

答案 0 :(得分:0)

当您启动.app软件包时,该文件夹根目录下的Info.plist会配置许多特定于操作系统的行为。

https://developer.apple.com/library/mac/#documentation/General/Reference/InfoPlistKeyReference/Introduction/Introduction.html

您可以通过这种方式启动任何本机可执行文件,并具有相同的行为。