【问题标题】:Behaviour of OS-X Application BundlesOS-X 应用程序包的行为
【发布时间】:2013-01-25 20:46:35
【问题描述】:

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

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

如果我从终端(或查找器)运行二进制文件本身:

  • Emacs 启动,正确处理我的 init 文件并且看起来不错。
  • 但应用程序菜单仍然显示“终端”并且
  • 键盘输入到终端而不是 Emacs。
  • 此外,红色交通灯按钮被发送到 Emacs(Emacs 说它没有什么可保存的)但不会终止进程。

相比之下,如果我运行 Emacs.app,Emacs 会按预期运行。谁能帮我解释一下这个区别吗?

【问题讨论】:

    标签: macos executable osx-mountain-lion nsbundle


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的链接,我现在就阅读。但是,当您说“任何”时,有些可执行文件的行为并非如此。例如,我有 Gimp(gimp-2.8:Mach-O 64 位可执行文件)并从 shell 运行它,就像我期望一个应用程序工作一样。这里有什么区别?
    • 没有什么可以阻止您指定大多数(如果不是全部)通常在可执行文件的 Info.plist 中配置的行为。
    • 啊,好的,所以 Emacs 人员花费了必要的精力来创建应用程序包,而 gimp 人员将等效的操作编码到可执行文件中。现在明白了,谢谢。
    猜你喜欢
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多