plist文件,Property List 文件,一般都是xml文件格式,用于描述应用软件
主要包括如下:
关键字 |
类型 |
是否必须 |
摘要 |
CFBundleDevelopmentRegion | String | No | 该束的地区。通常对应于作者的母语。 |
CFBundleDisplayName | String | No | 本地化的束名。 |
CFBundleDocumentTypes | Array | No | 一组描述了该束所支持的文档类型的字典。 |
CFBundleExecutable | String | Yes | 该束的可执行文件名。 |
CFBundleGetInfoHTML | String | No | 用来在Finder的Get Info 面板中显示的更丰富内容的字符串。 |
CFBundleGetInfoString | String | No | 用来在Finder的Get Info 面板中显示的字符串。 |
CFBundleHelpBookFolder | String | No | 含有该束帮助文件的文件夹名字。 |
CFBundleHelpBookName | String | No | 当该束的帮助启动时显示的帮助文件的名字。 |
CFBundleIconFile | String | Yes | 图标文件的文件名。 |
CFBundleIdentifier | String | Yes | 该束的唯一标识字符串。该字符串的格式类似java包的命名方式,例如:com.apple.myapp。 |
CFBundleInfoDictionaryVersion | String | Yes | Info.plist格式的版本信息。 |
CFBundleName | String | Yes | 束的简称。 |
CFBundlePackageType | String | Yes | 用来标识束类型的四个字母长的代码。 |
CFBundleShortVersionString | String | Yes | 面向用户市场的束的版本字符串。 |
CFBundleSignature | String | Yes | 用来标识创建者的四个字母长的代码。 |
CFBundleURLTypes | Array | No | 一组描述了该束所支持的URL协议的字典。 |
CFBundleVersion | String | Yes | 可执行文件的创建号。 |
CFBundleDevelopmentRegion
CFBundleDevelopmentRegion关键字指定了一个字符串值来标识束的地区。通常对应于作者的母语。如果不能找到用户首选的地区或语言的资源,系统最后会使用该值。
CFBundleDisplayName
CFBundleDisplayName关键字指定了一个字符串值来标识束的显示名称。Finder和其他用户界面组件会把它显示给用户。这个名称可以与 文件系统中的束名不同。通过把关键字加入适当的.lproj子目录中的InfoPlist.strings文件,就可以实现该关键字的本地化。如果您需要 本地化这个关键字,您还应该提供一个CFBundleName关键字的本地化版本。
有关显示名称的更多信息参见“本地化文件系统名称” 。
CFBundleDocumentTypes
CFBundleDocumentTypes关键字保存了一组字典,它包含了该应用程序所支持的文档类型。每一个字典都被称做类型定义字典,并且包含了用于定义文档类型的关键字。表A-2列出了类型定义字典中支持的关键字。
表 A-2 CFBundleDocumentTypes字典的关键字
关键字 类型 描述CFBundleTypeExtensions Array 该关键字包含了一组映射到这个类型的文件扩展名。为了打开具有任何扩展名的文档,可以用单个星号“*”。该关键字是必须的。 CFBundleTypeIconFile String 该关键字指定了系统显示该类文档时使用的图标文件名,该图标文件名的扩展名是可选的。如果没有扩展名,系统会根据平台指定一个(例如,Mac OS 9中的.icons)。 CFBundleTypeName String 该关键字包含了这种文档类型的抽象名称。通过在适当的InforPlist.strings文件中包含该关键字,可以实现对它的本地化。 CFBundleTypeOSTypes Array 该关键字包含了一组映射到这个类型的四字母长的类型代码。为了打开所有类型的文档,可以把它设为“****”。该关键字是必须的。 CFBundleTypeRole String 该关键字定义了那些与文档类型有关的应用程序的角色。它的值可以是Editer,Viewer,Printer,Shell或None。有关这些值的详细描述可以参见“ 文档的配置” 。该关键字是必须的。 NSDocumentClass String 该关键字描述了被用来实例化文档的NSDocument子类。仅供Cocoa应用程序使用。 NSExportableAs Array 该关键字描述了一组可以输出的文档类型。仅供Cocoa应用程序使用。
CFBundleExecutable
CFBundleExecutable 标识了束的可执行主文件的名称。对于一个应用程序来说,就是该应用程序的可执行文件。对于一个可加载束,它是一个可以被束动态加载的二进制文件。对于一个框架,它是一个共享库。Project Builder会自动把该关键字加入到合适项目的Info.plist文件中。
对于框架,考虑到启动效率的原因,可执行文件名需要和框架名同名。该可执行文件名不应该包含可用于多种平台的扩展名。
注意
您必须在束的Info.plist文件中包含一个有效的CFBundleExecutable关键字。即使当用户重命名应用程序或束的目录时,Mac OS X也可以使用这个关键字来定位可执行文件和共享库。
CFBundleGetInfoHTML
CFBundleGetInfoHTML关键字含有会在束的信息窗口中显示的HTML字符串。如果您希望在信息窗口中有更强的表现力,可以使用这个键值对 来替代纯文本的CFBundleGetInfoString。通过把它加入到合适的.lproj目录中的InfoPlist.strings文件中,您也 可以本地化该字符串。
如果CFBundleGetInfoString和CFBundleGetInfoHTML同时存在的话,系统会选择使用CFBundleGetInfoHTML。
CFBundleGetInfoString
CFBundleGetInfoString关键字含有会在束的信息窗口中显示的纯文本字符串(这里的字符串也就是Mac OS 9中的长字符串)。该关键字的格式应该遵照Mac OS 9中的长字符串,例如:“2.2.1, ? Great Software, Inc, 1999”。通过把它加入到合适的.lproj目录中的InfoPlist.strings文件中,您也可以本地化该字符串。
如果存在CFBundleGetInfoHTML的话,系统不会选择使用该关键字。
CFBundleHelpBookFolder
CFBundleHelpBookFolder关键字含有该束的帮助文件的文件夹名字。帮助通常被本地化成一种指定的语言,所以该关键字指向的文件夹应该是所选择语言的.lproj目录中的文件夹。
CFBundleHelpBookName
CFBundleHelpBookName指定了您的应用程序的帮助主页。该关键字指定的帮助页面名可以和HTML文件名不同。在帮助文件META标签的CONTENT属性中指定了帮助页面名。
CFBundleIconFile
CFBundleIconFile关键字指定了包含该束图标的文件。您给出的文件名不需要包含“.icns”扩展名。Finder会在该束的“Resource”文件夹内寻找图标文件。
如果您的束使用了自定义的图标,那您就必须指定该属性。假如您没有指定,Finder(和其他应用程序)会使用缺省的图标来显示您的束。
CFBundleIdentifier
CFBundleIdentifier关键字指定了束的一个唯一的标识字符串。该标识符采用了类似Java包的命名方式,例如com.apple.myapp。该束标识符可以在运行时定位束。预置系统使用这个字符串来唯一地标识每个应用程序。
CFBundleInfoDictionaryVersion
CFBundleInfoDictionaryVersion关键字指定了属性列表结构的当前版本号。该关键字的存在使得可以支持Info.plist格式将来的版本。在您建立一个束时,Project Builder会自动产生该关键字。
CFBundleName
CFBundleName指定了该束的简称。简称应该小于16个字符并且适合在菜单和“关于”中显示。通过把它加入到适当的.lproj子文件夹下的 InfoPlist.strings文件中,该关键字可以被本地化。如果您本地化了该关键字,那您也应该提供一个CFBundleDisplayName 关键字的本地化版本。
CFBundlePackageType
CFBundlePackageType关键字指定了束的类型,类似于Mac OS 9的文件类型代码。该关键字的值包含一个四个字母长的代码。应用程序的代码是‘APPL’;框架的代码是‘FMWK’;可装载束的代码是‘BND’。如果您需要,您也可以为可装载束选择其他特殊的类型代码。
CFBundleShortVersionString
CFBundleShortVersionString关键字指定了束的版本号。一般包含该束的主、次版本号。这个字符串的格式通常是“n.n.n”(n 表示某个数字)。第一个数字是束的主要版本号,另两个是次要版本号。该关键字的值会被显示在Cocoa应用程序的关于对话框中。
该关键字不同于CFBundleVersion,它指定了一个特殊的创建号。而CFBundleShortVersionString的值描述了一种更加正式的并且不随每一次创建而改变的版本号。
CFBundleSignature
CFBundleSignature关键字指定了束的创建者,类似于Mac OS 9中的文件创建者代码。该关键字的值包含四字母长的代码,用来确定每一个束。
CFBundleURLTypes
CFBundleURLTypes关键字包含了一组描述了应用程序所支持的URL协议的字典。它的用途类似于CFBundleDocumentTypes 的作用,但它描述了URL协议而不是文档类型。每一个字典条目对应一个单独的URL协议。表A-3列出了在每一个字典条目中使用的关键字。
表A-3 CFBundleURLTypes字典的关键字
关键字 类型 描述CFBundleTypeRole String 该关键字定义了那些与URL类型有关的应用程序的角色(即该应用程序与某种文档类型的关系)。它的值可以是Editer,Viewer,Printer,Shell或None。有关这些值的详细描述可以参见“ 文档的配置” 。该关键字是必须的。 CFBundleURLIconFile String 该关键字包含了被用于这种URL类型的图标文件名(不包括扩展名)字符串。 CFBundleURLName String 该关键字包含了这种URL类型的抽象名称字符串。为了确保唯一性,建议您使用Java包方式的命名法则。这个名字作为一个关键字也会在InfoPlist.strings文件中出现,用来提供该类型名的可读性版本。 CFBundleURLSchemes Array 该关键字包含了一组可被这种类型处理的URL协议。例如:http,ftp等。
CFBundleVersion
CFBundleVersion关键字指定了一个字符串用来标识创建号。该关键字的值通常随每一次创建而改变,并且会被显示在Cocoa"关于"对话框中的扩号里。
为了指定一个发布版的束的版本信息,可以使用CFBundleShortVersionString关键字。参见“CFBundleShortVersionString” 。
应用程序特定的关键字
表A-4列出了仅用于应用程序束的关键字:
表A-4应用程序特定的关键字
关键字 类型 是否必须 摘要CFAppleHelpAnchor String No 该束的初始HTML帮助文件。 NSAppleScriptEnabled String No 指定是否支持AppleScript。 NSHumanReadableCopyright String Yes 显示在对话框中的版权信息。 NSJavaNeeded Boolean or String No 指定该程序是否需要一个Java虚拟机。 NSJavaPath Array No 一组Java类所在的路径(前面需要加上NSJavaRoot)。 NSJavaRoot String No 包含Java类的根目录。 NSMainNibFile String Yes 应用程序的主nib文件名。 NSPrincipalClass String Yes 束的主类的名字。 NSServices Array No 一组描述了由应用程序所提供的服务的字典。
CFAppleHelpAnchor
CFAppleHelpAnchor关键字定义了束的初始HTML帮助文件名,不需要包括.html或.htm扩展名。这个文件位于束的本地化资源目录中,或者如果没有本地化资源目录的话,则直接被放在Resources目录中。
NSAppleScriptEnabled
NSAppleScriptEnabled关键字说明了该应用程序是否支持AppleScript。如果您的应用程序支持,就需要把该字符串的值设为“Yes”。
NSHumanReadableCopyright
NSHumanReadableCopyright关键字包含了一个含有束的版权信息的字符串。您可以在“关于”对话框中显示它。该关键字通常会出现在InfoPlist.strings文件中,因为往往需要本地化该关键字的值。
NSJavaNeeded
NSJavaNeeded关键字含有一个布尔值,用来确定在执行该束的代码之前Java虚拟机是否需要被载入并运行。您也可以指定一个字符串类型的值“YES”代替布尔型的值。
NSJavaPath
NSJavaPath关键字包含了一组路径。每一个路径指向一个Java类。该路径相对于由NSJavaRoot关键字定义的位置来说,可能是一个绝对路径也可能是一个相对路径。开发环境会自动把这些值保存在数组中。
NSJavaRoot
NSJavaRoot关键字含有一个指向一个目录的字符串。该目录是应用程序的Java类文件的根目录。
NSMainNibFile
NSMainNibFile关键字包含了一个含有应用程序的主nib文件名(不包含.nib文件扩展名)的字符串。一个nib文件作为一个Interface Builder的存档文件,含有对用户界面的详细描述信息以及那些界面中的对象之间的关联信息。当应用程序被启动时,主nib文件会被自动装载。Mac OS X会寻找与应用程序名相匹配的nib文件。
NSPrincipalClass
NSPrincipalClass关键字定义了一个束的主类的名称。对于应用程序来说,缺省情况下这个名字就是应用程序的名字。
NSServices
NSServices包含了一组字典,它详细说明了应用程序所提供的服务。表A-5列出了用来指定服务的关键字。
表 A-5 NSServices字典的关键字
关键字 类型 描述NSPortName String 该关键字指定了由您的应用程序监听器为接受外部服务请求所提供的端口名称。 NSMessage String 该关键字指定了用来调用该服务的实例方法名。在Objective-C中,实例方法的形式是messageName:userData:error:。在Java中,实例方法的形式是messageName(NSPasteBoard.String)。 NSSendTypes Array 该关键字指定了一组可以被该服务读取的数据类型名。NSPasteboard类列出了几个常用的数据类型。您必须包含此关键字,NSReturnTypes,或者两者。 NSReturnTypes Array 该关键字指定了一组可以被该服务返回的数据类型名。NSPasteboard类列出了几个常用的数据类型。您必须包含此关键字,NSSendTypes,或者两者。 NSMenuItem Dictionary 该关键字包含一个字典,它指定了加入Services菜单中的文本。字典中的唯一一个关键字被称为default并且它的值是菜单项的文本。该值必须是唯 一的。您可以使用斜杠“/”来指定一个子菜单。例如,Mail/Send出现在Services菜单中时就是一个带有Send子菜单并且名为Mail的菜 单。 NSKeyEquivalent Dictionary 该关键字是可选的,并且包含一个含有用来请求服务菜单命令的快捷按键的字典。与NSMenuItem类似,字典中的唯一一个关键字被称为default并且它的值是单个的字符。用户可以通过按下Command,Shift功能键和相应的字符来请求该快捷按键。 NSUserData String 该关键字是一个可选字符串,它含有您的选择值。 NSTimeout String 该关键字是一个可选的数字字符串,它指定了从应用程序请求服务到收到它的响应所需要等待的毫秒数。
启动服务关键字
启动服务关键字规定了Mac OS X中的应用程序是怎样被启动的。这些关键字适用于CFM和Mach-O可执行文件。有关CFM和Mach-O可执行文件的详情可参见“安装和集成” 一章中的“CFM可执行文件” 。表A-6列出了启动服务的关键字。
表A-6启动服务关键字
关键字 类型 是否必须 摘要LSBackgroundOnly String No 指定了应用程序是否仅仅运行在后台。(仅适用于Mach-O的应用程序)。 LSPrefersCarbon String No 指定了应用程序是否优先运行在Carbon环境中。 LSPrefersClassic String No 指定了应用程序是否优先运行在Classic环境中。 LSRequiresCarbon String No 指定了应用程序是否必须运行在一个Carbon环境中。 LSRequiresClassic String No 指定了应用程序是否必须运行在一个Classic环境中。 LSUIElement String No 指定了应用程序是否是一个用户界面组件,即一个应用程序不应该出现在Dock中或强制退出窗口。
LSBackgroundOnly
如果该关键字存在并且被设为“1”,启动服务将只会运行在后台。您可以使用该关键字来创建无用户界面的后台应用程序。如果您的应用程序使用了连接到窗口服 务器的高级框架,但并不需要显示出来,您也应该使用该关键字。后台应用程序必须被编译成Mach-O可执行文件。该选项不适用于CFM应用程序。
您也可以指定该关键字的类型为Boolean或Number。然而,只有Mac OS X 10.2或以上的版本才支持这些类型的值。
LSPrefersCarbon
如果该关键字被设为“1”,Finder将会在显示简介面板中显示“在Classic环境中打开”控制选项,缺省情况下该控件未被选中。如果需要,用户可以修改这个控制选项来在Classic环境中启动应用程序。
您也可以指定该关键字的类型为Boolean或Number。然而,只有Mac OS X 10.2或以上的版本才支持这些类型的值。如果您在您的属性列表中加入了该关键字,那么就不要同时加入LSPrefersClassic, LSRequiresCarbon,或LSRequiresClassic关键字。
LSPrefersClassic
如果该关键字被设为“1”,Finder将会在显示简介面板中显示“在Classic环境中打开” 控制选项,缺省情况下该控件被选中。如果需要,用户可以修改这个控制选项来在Carbon环境中启动应用程序。
您也可以指定该关键字的类型为Boolean或Number。然而,只有Mac OS X 10.2或以上的版本才支持这些类型的值。如果您在您的属性列表中加入了该关键字,那么就不要同时加入LSPrefersCarbon, LSRequiresCarbon,或LSRequiresClassic关键字。
LSRequiresCarbon
如果该关键字被设为“1”,启动服务将只在Carbon环境中运行应用程序。如果您的应用程序不应该运行在Classic环境中的话,可以使用该关键字。
您也可以指定该关键字的类型为Boolean或Number。然而,只有Mac OS X 10.2或以上的版本才支持这些类型的值。如果您在您的属性列表中加入了该关键字,那么就不要同时加入LSPrefersCarbon, LSPrefersClassic,或LSRequiresClassic关键字。
LSRequiresClassic
如果该关键字被设为“1”,启动服务将只在Classic环境中运行应用程序。如果您的应用程序不应该运行在Carbon兼容环境中的话,可以使用该关键字。
您也可以指定该关键字的类型为Boolean或Number。然而,只有Mac OS X 10.2或以上的版本才支持这些类型的值。如果您在您的属性列表中加入了该关键字,那么就不要同时加入LSPrefersCarbon, LSPrefersClassic,或LSRequiresCarbon关键字。
LSUIElement
如果该关键字被设为“1”,启动服务会将该应用程序作为一个用户界面组件来运行。用户界面组件不会出现在Dock或强制退出窗口中。虽然它们通常作为后台 应用程序运行,但是如果希望的话,它们也可以在前台显示一个用户界面。点击属于用户界面组件的窗口,应用程序将会处理产生的事件。
Dock和登录窗口是两个用户界面组件应用程序。
应用程序包关键字
应用程序打包的目的是把一个应用程序打包成一个自我包含的实体,并且对用户隐藏了它的内容。然而,用户常常希望操作应用程序的某些文件。例如,用户可能希望添加或删除某个插件,本地化资源,等等。开发者可以在Info.plist 文件中指定一些可以由用户维护的项目。那么Finder会把这些项目显示在束的信息面板中,并允许用户浏览,删除或添加这些项目。
CFBundleInstallerInfo
应用程序打包信息的根关键字是CFBundleInstallerInfo。该关键字定义了一个字典,它包含了表A-7中所列出的关键字。“是否必须”列指出了哪些是您必须支持的功能。
表A-7应用程序打包关键字
关键字 类型 是否必须 摘要APInstallerURL String Yes 一个指向您希望安装的文件的URL路径。 APFiles Array Yes 一组字典,描述了那些可以被安装的文件或目录。
APInstallerURL
APInstallerURL关键字指定了一个指向您希望安装的文件的路径。您必须以file://localhost/path/ 形式来说明这个路径。所有被安装的文件必须位于这个文件夹中。
APFiles
APFiles关键字指定了一个字典,描述了您希望安装的文件。每个字典条目可以包含某个文件或目录的描述。您可以让APFiles 关键字包含在其自身中,用于指定在目录内部的文件。表A-8列出了用来指定有关单个文件或目录的信息。
表A-8 APFiles字典关键字
关键字 |
类型 |
描述 |
APFileDescriptionKey | String | 用来显示在Finder的信息窗口中的简短描述。 |
APDisplayedAsContainer | String | 如果值为“Yes”,该项目作为一个目录图标显示在信息面板中;否则,它被显示为一个文档图标。 |
APFileDestinationPath | String | 一个安装组件的相对路径。 |
APFileName | String | 文件或目录的名称。 |
APFileSourcePath | String | 指向应用程序包中组件的路径,相对与APInstallerURL路径。 |
APInstallAction | String | 操纵组件的动作:“Copy”或者“Open |