看板 uefacool
作者 標題 [MaOS] Package Maker 安裝
時間 2012年01月02日 Mon. PM 08:04:06
http://www.apple.com.cn/developer/ma...gDrivers/DeployingDrivers.html
打包驱动程序用于安装
在您将驱动程序发出去之前,您需要对其进行打包以便您的客户安装它。
Mac OS X提供了Package Maker应用程序(位于/Developer/Applications和一个命令行工具版本,位于/Developer/Applications/PackageMaker.app/Contents/MacOS/PackageMaker)来创建安装包。
Package Maker应用程序带您创建安装包并通过您在它的编辑窗口中输入的信息创建需要的文件,制作安装包的过程几乎是自动的。命令行工具需要您提供您自己创建的一些必要的文件。关于如何使用Package Maker来创建安装包的更详细的信息,请见Package Maker的帮助菜单。关于使用命令行版本的跟多信息,在/Developer/Applications/PackageMaker.app/Contents/MacOS 目录中输入./PackageMaker -help。
下面的部分提供了Package Maker安装包的组件的概述,描述了一个合法的安装包由什么组成,并概述了您的安装包是如何安装的。如果您使用其它的安装包制作工具来创建您的安装包,确保生成的安装包包含这些部分讨论的所有必要的元素。
请注意: 本章讨论了Mac OS X 10.2及以上版本中的Package Maker应用程序。为了创建能够在更早版本的Mac OS X上安装的安装包,您应当使用之前版本的Package Maker。
安装包的内容
Package Maker安装包是一个基于Info.plist的NSBundle对象,它包含了安装器在Mac OS X系统上安装软件所需要的信息。安装包的内容分为必需的全局资源和可选的可本地化的资源。列表 8-1 展示了名为MyPackage的安装包的格式。
列表 8-1 MyPackage的PackageMaker格式
MyPackage.pkg
Contents
Info.plist
Archive.pax.gz
Archive.bom
Resources
/* Optional, localizable package-description information */
Description.plist
/* Optional, localizable documents */
License document
ReadMe document
Welcome document
/* Optional scripts */
preinstall script
postinstall script
preupgrade script
postupgrade script
preflight script
postflight script
/* Optional check tools */
InstallationCheck tool
VolumeCheck tool
/* Optional, localizable background image */
background
/* Optional language project folders. If present, these */
/* folders contain localized versions of Description.plist, */
/* License, ReadMe, Welcome, and background files. */
English.lproj
Japanese.lproj
Package Maker用您在信息窗口中输入的信息来创建安装包的Info.plist文件。如默认安装位置和需要的用户认证级别这样的信息让您对安装包的内容进行自定义。
请注意: 如果您的文件必须被安装到非普通用户位置,例如KEXT要安装到/System/Library/Extensions,您必须使用管理员或者root认证来创建您的安装包。
Archive.bom和Archive.pax.gz 文件是必需的文件,Package Maker通过您在文件窗口输入的信息来为您创建它们。Archive.bom文件是一个材料清单(bill-of-materials)文件,它向安装器描述了安装包的内容。Archive.pax.gz是一个包含了安装包的内容的压缩归档文件。
(在之前版本的Package Maker中,这些文件名称和安装包的名称一致,即MyPackage.bom和MyPackage.pax.gz。)
Resources目录包含了您提供给安装器在安装过程中使用的文档、脚本,和工具。除了Description.plist文件(包含您在描述窗口输入的信息),Package Maker不会为您创建其它的文件。您可以完全控制这些文件的内容,但是您必须遵循Package Maker的命名规则,否则安装器将不能找到并执行它们。
您必须将您的可本地化的文档命名为License.扩展名,ReadMe.扩展名,和Welcome.扩展名,其中扩展名是html、rtf、rtfd、txt,或者根本没有扩展名。在Mac OS X 10.2中,您可以自定义打开安装包时安装器显示的背景图像。您必须将您的背景图片文件名命名为background.扩展名,,其中扩展名是jpg、tif、tiff、gif、pict、eps,或者pdf。
可选的脚本也必须遵循Package Maker的命名规则。您可以在脚本中执行各种任务,但是您应当注意不要让它们的负担太重,否则安装的速度会受到影响。例如,您可以在preflight脚本中创建一个文件夹,但是更好的做法是在归档文件中建立需要的文件夹。作为总体的规则,您应当谨慎地使用脚本来执行安装过程中的动态任务,尝试让您的安装包提供您的软件需要的一切。如果您确定要包含脚本并在安装过程中执行,确保它们是可执行的。
如果您需要在安装之前检查计算机的配置,例如是否有足够的内存来运行安装器,或者是否存在其它软件,您可以提供一个安装检查工具。安装器在一打开安装包时就运行这个工具(如果存在)。和可选的脚本一样,您必须遵循Package Maker的命名规则而且您必须让这个工具可被执行。另外,安装检查工具返回一个整形的错误码。错误码是作为表示安装状态的位域,安装器可以解析它们。安装器把其中的一些位作为错误消息文件中的索引号,这些错误信息是安装器事先定义的或者自定义的。如果您选择定义自己的一组错误消息,您需要创建一个可本地化的InstallationCheck.strings文件并把它放到您的本地化的.lproj文件夹中。
安装器为用户提供了用于安装您的安装包的卷标的选择。如果您需要禁止一个或者多个卷标选择,您可以提供一个卷标检查工具(您必须把它命名为VolumeCheck并让它可以被之行)。安装在显示目标选择窗口之前运行这个工具(如果存在)。像安装检查工具一样,卷标检查工具按位域的方式返回一个整形的结果码。安装器使用一些位来确认一些关于安装检查工具状态的属性,其它的位作为事先定义的或者自定义的VolumeCheck.strings错误消息文件中的索引号。
元安装包(metapackage)是一个简单的包含已创建的安装包的包。例如,如果您提供了一套驱动程序,您可以创建一个元安装包来包含它们全部,并让您的客户安装他们选择的包。可以选择Package Maker的文件菜单中的New Meta Package来创建元安装包。
元安装包和单独的安装包有一些相同的组件,它还包括了一个额外的自安装包(每个都必须是合法的安装包)列表。关于它们在Info.plist的键中的一些特殊的区别,请见Package Maker的安装包格式记录。
安装包的验证和安装
Package Maker提供了一个验证工具,您可以用来执行您的安装包以找出潜在的问题(选择Tools菜单中的Validate Package来运行它)。您可以对任何版本Package Maker制作的安装包使用这个工具。这个工具检查必需的文件是否存在以及脚本是否可以执行。一个合法的安装包必须包含
一个.bom文件
一个.pax.gz文件,除非这个安装包是一个回执或者它设置了可选的源地址键或者代理安装包键(这些键定义于Package Maker的安装包格式记录中)
一个Info.plist文件(对于使用最新的Package Maker制作的安装包)或者.info文件(对于使用老版本的Package Maker制作的安装包)
一个.sizes文件,对于使用老版本的Package Maker制作的安装包
可执行的脚本和工具,如果脚本和工具存在
一个合法的元安装包必须包含
一个.list文件,如果元安装包是使用老版本的Package Maker制作的
一个Info.plist 文件中的安装包列表数组,如果元安装包是使用新版本的Package Maker制作的
安装包列表数组中列出的自安装包,如果元安装包是使用新版本的Package Maker制作的
当安装器安装单独的安装包时,它会执行下面的步骤:
运行安装检查脚本(如果存在)。
显示欢迎界面。
显示ReadMe界面。
显示License界面。
对每一个可用的卷标运行卷标检测脚本(如果存在)。
显示卷标选择界面。
等待用户选择目标卷标并点击安装。
运行preflight脚本(如果存在)。
运行preinstal脚本(如果存在,或者如果是升级则运行preupgrade脚本)。
将文件复制到目标驱动器(如果是升级,一些文件可能首先被复制中间目录)。
运行postinstall脚本(如果存在,或者如果是升级则运行postupgrade脚本)。
如果是升级,复制中间目录中的文件到它们的最终目的地。
将回执复制到目标驱动器的Receipts文件夹。
运行postflight脚本(如果存在)。
根据安装包中的标记,重新启动机器或者退出。
当安装元安装包时,安装器执行类似的的步骤:
运行安装检查脚本(如果存在)。
显示欢迎界面。
显示ReadMe界面。
显示License界面。
对每一个可用的卷标运行卷标检测脚本(如果存在)。
显示卷标选择界面。
等待用户选择目标卷标并点击安装。
对每一个子安装包执行下面的步骤
运行preflight脚本(如果存在)。
运行preinstal脚本(如果存在,或者如果是升级则运行preupgrade脚本)。
将文件复制到目标驱动器(如果是升级,一些文件可能首先被复制中间目录)。
运行postinstall脚本(如果存在,或者如果是升级则运行postupgrade脚本)。
如果是升级,复制中间目录中的文件到它们的最终目的地。
运行postflight脚本(如果存在)。
根据元安装包中的标记,重新启动机器或者退出。
如果您使用其它的工具来创建您的安装包,您应当仔细检查安装的文件以确保所有东西都安装到了您希望安装的位置。
--
※ 作者: uefangsmith 時間: 2012-01-02 20:04:06
※ 編輯: uefangsmith 時間: 2012-01-02 20:14:21
※ 看板: uefacool 文章推薦值: 0 目前人氣: 0 累積人氣: 30
回列表(←)
分享