安装后,Mac OSX上我的应用程序显示的应用程序名称出现问题,不是我想要的那样。这是用于以pkg文件形式分发到应用商店之外的应用。除了Mac的“ Applications”文件夹中显示的应用程序名称以外,其他所有功能都可以正常运行。无论我做什么,显示的始终是捆绑包名称(不带.app)。我曾以为它将使用我在Info.plist
文件中提供的名称。
这就是我正在做的。
我为我的应用创建了一个包,其中包含定义包显示名称的Info.plist,如下所示:
myapp.app/
myapp.app/Contents
myapp.app/Contents/Info.plist
myapp.app/Contents/MacOS
...
myapp.app/Contents/Resources
...
实际上是我使用qmake / make / macdeployqt而不使用Xcode构建的基于Qt的应用程序。我认为那与我的问题无关。在我的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
捆绑文件夹,然后我使用.pkg
和pkgbuild
创建了一个productbuild
。但是嵌入在最终产品包中的组件包中的是其Info.plist
文件,该文件说明了(我想要)显示的名称是-"My Application"
。
我可以从Finder运行.pkg文件,这一切似乎都可以安装。
但是,当我打开我的Applications文件夹时(使用任务栏上的'A'图标),它在那里但没有叫'My Application'
,而是叫了'myapp'
,这是应用程序包的名称。它运行正常,只是显示的名称始终是错误的。
所以...问题是我想控制用户看到的名称,但是由于其中包含空格,我不能使用它作为bundle.app中的名称。
所以...如何在/ Applications文件夹中和任务栏图标上显示想要显示的应用程序名称?
谢谢
Finder会显示文件名(有时不带扩展名),而不是束名;如果希望查找程序将其显示为“我的应用程序”,则必须将捆绑文件夹命名为“ My Application.app”。如果正确引用,名称中的空格应该不是问题:
pkgbuild --component "My Application.app" --version 1 --install-location /Applications component.pkg
如果qmake / make / macdeployqt工具无法处理文件名中的空格,则选择其中一个
编辑:CFBundleDisplayName键的目的是允许所显示的应用程序名称的语言本地化。本质上,如果将其设置为与实际文件夹名称相同,然后在Contents / Resources / somelanguage.lproj / InfoPlist.strings文件中包含其本地化名称,它将显示该本地化名称而不是真实文件名。但是,如果用户重命名(这样做是完全合理的事情),则Finder将看到CFBundleDisplayName和实际名称之间的不匹配,忽略本地化并显示用户选择的名称。有关说明,请参见Apple docs on CFBundleDisplayName。
有趣的是,通过.dmg将应用程序作为.app软件包安装似乎使Finder使用CFBundle [Display] Name。
但是,如果通过.pkg分发相同的应用程序,它将不会被接受。