Finder 中的应用名称与终端中的应用名称不匹配

App name in Finder not matching app name in Terminal

它在 Finder 中显示为 nwjs.app,但在终端中显示为 nw-demo.app

如果我使用 mv nw-demo.app nw-demo2.app 重命名该应用程序,它会在 Finder 中正确显示。如果我随后使用 mv nw-demo2.app nw-demo.app 重命名它,它会再次显示为 nwjs.app。奇怪。

名字应该是nw-demo.app,我想要的是nwjs.app。我在 nw-demo.app/Contents/Info.plist 或任何地方都没有看到任何可以将其设置为 nwjs 的内容。这是 Info.plist:

我所要做的就是删除 nw-demo.app/Contents/Resources/*.lproj。显然这些文件用于国际化并影响显示名称。

如果您的 Info.plist 包含 CFBundleDisplayName 键(在您的屏幕截图中显示为 "Bundle display name")并且它的值与磁盘上应用程序包的名称匹配(减去 .app扩展名),然后 Launch Services 会在应用程序包中搜索与用户所选语言匹配的本地化文件中的 InfoPlist.strings 文件。如果它找到一个并且具有 CFBundleName 键的本地化,则它使用该本地化作为包的显示名称。

Finder、Dock、文件对话框等在向用户显示文件和目录时都使用从 Launch Services 获得的显示名称。

将 Info.plist 值与磁盘上的名称进行比较是为了让用户可以根据自己的喜好重命名应用程序包。如果用户重命名了它,字符串将不匹配,并且不会尝试本地化用户提供的名称。但是,如果字符串确实匹配,则表明用户没有重命名它(或者已经小心地将它重命名回真正的原始值,而不是表面上的原始值),因此尊重应用程序提供的本地化。