【问题标题】:MacOS: Version info for not bundled/unix executablesMacOS:未捆绑/unix 可执行文件的版本信息
【发布时间】:2015-04-24 14:27:51
【问题描述】:

这对我来说是个谜:

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

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

【问题讨论】:

  • 版本来自位于此路径的可执行文件的信息 plist。 /Applications/AppName.app/Contents/Info.Plist
  • 请仔细阅读我的问题。它不是一个捆绑的应用程序。像 /usr/bin/grep (但 grep 没有版本信息)
  • 你的LaunchDaemon在哪个目录?我在 OS X Yosemite 上似乎没有。
  • @MarkSetchell,我相信 OP 指的是 /sbin/launchd

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


【解决方案1】:

我不知道您所指的特定 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 程序是否正在发生这种情况。

【讨论】:

  • 是的,就是这样。我发现。作为 otool 的输出,本身没有 Info.plist,但 grep 中有 sectname __info_plist。感谢您分享深奥的知识
  • 很高兴知道。我想知道为什么苹果不费心在他们所有的二进制文件中嵌入一个 plist;对我来说,大多数人都没有版本信息,这似乎很奇怪。
  • 他们很可能会在其中嵌入一个 Info.plist。正如我的链接所提到的,代码签名是必要的。只是它们可能不包含所有版本号。版本号有什么用?
  • 或者您可以在项目的构建设置中将CREATE_INFOPLIST_SECTION_IN_BINARY 构建设置设置为Yes,而不是-sectcreate 选项。
  • @0xced 另外,您需要将INFOPLIST_FILE 设置为path/to/Info.plist
【解决方案2】:

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

来自Mac OS X and iOS Internals,它将launchd 的启动描述为直接由内核启动,并且“name -- /sbin/launchd -- 被硬编码为变量init_program_name。 p>

我怀疑版本号也是以 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

【讨论】:

  • 它不适用于我的服务。它显示版本 1.0,但确实适用于 launchd。一种更模糊的方式......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多