MacOS:未捆绑/ unix可执行文件的版本信息

时间:2015-02-23 09:47:31

标签: macos finder info.plist mach-o spotlight

这对我来说很难:

  • for Bundles / Frameworks版本位于Info.plist
  • 对于旧应用程序,它位于资源分叉

但是今天我发现了一个新的可执行文件(LaunchDaemon),它没有资源分支,没有Info.plist,并且根据Finder中的右窗格有1.0.0.1110版本。问题是版本来自哪里?

2 个答案:

答案 0 :(得分:4)

我不知道您所指的具体LaunchDaemon程序,但对于一般情况,可以在链接时将Info.plist嵌入到可执行文件中。

-sectcreate __TEXT __info_plist path/to/Info.plist传递给ld,或等效地将-Wl,-sectcreate,__TEXT,__info_plist,path/to/Info.plist传递给编译器。

Apple在Code Signing Guide: Code Signing Tasks – Adding an Info.plist to Single-File Tools中记录了这一点。

您可以通过查看otool -lV path/to/whatever的输出来检查您所引用的LaunchDaemon程序是否正在发生这种情况。

答案 1 :(得分:1)

就我所知,launchd和launchctl二进制文件似乎是唯一报告Finder版本号的单独二进制文件。

Mac OS X and iOS Internals开始,它描述了启动直接由内核启动,“名称 - / sbin / launchd - 被硬编码为变量init_program_name ”。

我怀疑版本号也是以Finder知道要显示的内容的方式进行硬编码,否则Finder会将此视为特殊情况。

如果您使用'what'命令,您还可以看到二进制文件中的版本号,在我的例子中,在Yosemite 10.10.2上是2.0.0:

$ what /sbin/launchd

/sbin/launchd
PROGRAM:launchd  PROJECT:libxpc-559.10.3
VERSION:Darwin System Bootstrapper 2.0.0: Wed Nov 12 18:47:07 PST 2014; root:libxpc_executables-559.10.3~1/launchd/RELEASE_X86_64