0

我的应用程序在 Mac OSX 上显示的应用程序名称有问题,安装后,不是我想要的。这适用于在应用商店之外作为 pkg 文件分发的应用。除了显示在 Mac 的“应用程序”文件夹中的应用程序名称外,一切正常。无论我做什么,显示的始终是包名称(不带 .app)。我原以为它会使用我在Info.plist文件中给出的名称。

这就是我正在做的事情。

我为我的应用程序创建了一个包,其中包含一个定义包显示名称的 Info.plist,如下所示:

myapp.app/
myapp.app/Contents
myapp.app/Contents/Info.plist
myapp.app/Contents/MacOS
...
myapp.app/Contents/Resources
...

它实际上是一个基于 Qt 的应用程序,我使用 qmake/make/macdeployqt 构建而不使用 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>CFBundleIdentifier</key>
  <string>uk.co.blahdomain.MyApplication</string>
  <key>CFBundleName</key>
  <string>My Application</string>
  <key>CFBundleDisplayName</key>
  <string>My Application</string>

.....
</dict>
</plist>

我为该应用程序构建了一个安装程序包,如下所示:

pkgbuild --component myapp.app --version 1 --install-location /Applications component.pkg
productbuild --distribution distribution.xml --resources ./distresources --package-path . --version 1.2.3 --sign "Developer ID Installer: blah company name" test.pkg

如您所见,我的构建过程创建了一个myapp.app捆绑文件夹,并从中创建了一个.pkgusingpkgbuildproductbuild. 但是嵌入在最终产品包中的组件包中的是它的Info.plist文件,该文件说明(我想要)显示的名称是什么 - "My Application"

我可以从 Finder 中运行 .pkg 文件,而且一切似乎都安装好了。

但是当我打开我的应用程序文件夹(使用任务栏中的“A”图标)时,它在那里但没有被调用'My Application',而是被调用'myapp',这是应用程序包的名称。它运行良好,只是显示的名称总是错误的。

所以...问题是我想控制用户看到的名称,但由于它包含空格,我不能将其用作 bundle.app 中的名称。

那么......如何让应用程序名称在 /Applications 文件夹和任务栏图标上显示为我想要的?

谢谢

4

1 回答 1

1

Finder 显示文件名(有时没有扩展名),而不是包名;如果您希望查找器将其显示为“我的应用程序”,则必须将捆绑文件夹命名为“我的应用程序.app”。如果正确引用,名称中的空格应该不是问题:

pkgbuild --component "My Application.app" --version 1 --install-location /Applications component.pkg

如果 qmake/make/macdeployqt 工具无法处理文件名中的空格,那么要么

  1. 修复工具。文件名中的空格并不难处理,您只需要使用正确的 shell 引用,例如将所有变量引用用双引号括起来。
  2. 或者,创建不带空格的应用程序包,然后在打包分发之前将其重命名。

编辑: CFBundleDisplayName 键的目的是允许显示的应用程序名称的语言本地化。本质上,如果您将其设置为与实际文件夹名称相同,然后在 Contents/Resources/somelanguage.lproj/InfoPlist.strings 文件中包含它的本地化,它将显示该本地化名称而不是实际文件名。但是,如果用户重命名它(这是完全合理的做法),Finder 将看到 CFBundleDisplayName 和实际名称之间的不匹配,忽略本地化,并显示用户选择的名称。有关解释,请参阅CFBundleDisplayName 上的 Apple 文档

于 2014-03-16T05:32:15.707 回答