【问题标题】:MacOS requiring different OS version vs Info.plist需要不同操作系统版本的 MacOS 与 Info.plist
【发布时间】:2017-06-22 15:27:34
【问题描述】:

我正在构建一个 MacOS 应用程序包,并使用 Info.plist 中的 LSMinimumSystemVersion 键指定了最低操作系统版本 (10.10)。只要我们在 OS 10.12 上运行,该应用程序本身就可以正常工作。但是如果我们尝试在 10.11 上启动它,我们会收到错误消息:“您不能在此版本的 OS X 上使用此版本的应用程序。您有 OS X 10.11.6。该应用程序需要 OS X 10.12或以后。”

我已经调查了我能找到的与操作系统版本检查相关的所有内容,但我不知道发生了什么。即使我完全省略了LSMinimumSystemVersion 条目,我们也会得到相同的结果。我们已经在多台运行 10.11 的 Mac 上进行了测试,但它始终失败,因此这不是特定于机器的错误。实际的二进制文件(隐藏在应用程序包中的可执行文件)在 10.11 上运行良好,只是应用程序包失败了。

我正在使用 makefile 构建应用程序,而不是 Xcode(原因太长,无法进入此处)。也许我需要添加一些额外的步骤?

下面附上 Info.plist(略有删节):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleDevelopmentRegion</key>
    <string>English</string>
    <key>CFBundleExecutable</key>
    <string>*********</string>
    <key>CFBundleGetInfoString</key>
    <string>***************************</string>
    <key>CFBundleIconFile</key>
    <string>*******.icns</string>
    <key>CFBundleIdentifier</key>
    <string>*********************</string>
    <key>CFBundleName</key>
    <string>***************************</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleShortVersionString</key>
    <string>**.**.**</string>
    <key>CFBundleVersion</key>
    <string>**.**.**.**</string>
    <key>LSMinimumSystemVersion</key>
    <string>10.10.0</string>
    <key>NSHumanReadableCopyright</key>
    <string>**********************</string>
</dict>
</plist>

【问题讨论】:

  • 我认为您需要将“部署目标”设置为您希望能够在其上运行它的较低版本...
  • 我说我没有使用 Xcode。
  • 这有什么不同?我没有暗示你必须...
  • “部署目标”是 Xcode 设置。我不知道如何从命令行设置它(可能 Brendan 建议的选项是等效的)。

标签: macos info.plist


【解决方案1】:

您是否使用-mmacosx-version-min 进行编译/链接?如果您还没有,请将 -mmacosx-version-min=10.10 添加到您的编译器/链接器选项中

【讨论】:

  • 谢谢!那解决了它。我从来没有听说过这个选项,谷歌也没有。它似乎没有在任何地方记录。你到底是怎么知道的?
  • 啊哈,我发现为什么我搜索时找不到它。 TIL Google 不喜欢以减号开头的搜索字符串。
  • 嗯,我不明白为什么这有帮助。有人可以向我解释吗? OP 声明“隐藏在应用程序包中的可执行文件在 10.11 上运行良好,只是应用程序包失败了”。那么更改编译器标志(可能构建了隐藏在应用程序包中的可执行文件)如何影响应用程序包本身的成功?为什么没有标志可执行文件不会失败?为什么捆绑包成功了?谢谢!
  • 哈哈,但这也为我解决了问题。我不明白如何,但确实可以解决。
猜你喜欢
  • 2019-08-17
  • 1970-01-01
  • 2018-07-02
  • 1970-01-01
  • 2010-10-20
  • 2011-12-01
  • 2019-03-31
  • 2021-04-29
  • 2012-02-05
相关资源
最近更新 更多