Mac OS X:一种从APP中获得PKG的方法

最后更新于:2022-04-01 10:55:03

  # Mac OS X:一种从APP中获得PKG的方法       大家都知道,PKG文件是MacOS X InstallerPackage(/System/Library/CoreServices/Install.app程序)支持的程序安装文件格式,可以用于AppleRemoteDesktop软件来远程安装,同时也是作为支持客户化安装时首选的格式。由于系统本身支持图形化或者命令行的安装方式,所以安装方式灵活。       管理员很多时候会遇到需要自己根据需要制作PKG安装程序的时候,尤其是供应商不提供PKG格式的安装程序,而是类似一个APP文件的时候,有时也不可能让供应商专门为自己的公司提供客户化的PKG安装程序,这时对管理员是一个挑战,当然有一些工具可供使用,但对于一些程序安装,并不太试用,或者说也很费时费力,要考虑目标机的诸多因素,相当于还原该安装程序的部分/全部的安装判断过程。而由于PKG文件本身方便简易的特点,其实有的APP安装程序里面就包含了所有需要的PKG安装文件,如果可以成功提取其中的PKG文件,可以减轻好多管理员的工作。       下面就根据自己的经验,以HP的扫描仪ScanJet 4050为例,介绍这个提取的一般方法。       首先,在HP的网站下载DMG格式的程序文件,我下载的是COL21134.dmg文件,双击后安装为COL21134盘,显示在桌面,可以看到里面仅包括了一个HP Scanner Install.app的安装执行文件,如下图: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-19_57158f4b8f606.jpg)       运行后可以选择需要的扫描仪型号,然后就可以安装了,如下图: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-19_57158f4bb62a3.jpg)       其实所有的PKG文件都包含在了这个APP执行程序里面了。鼠标右键点击这个APP文件, ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-19_57158f4bda755.jpg)       选择Show Package Contents,在打开的窗口中依次进入目录Contents->Resources->Installers ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-19_57158f4bf3556.jpg)       通过上图可以看见有一个叫做Install HP scanjet G4050.mpkg的文件,把它拖到Desktop上, 鼠标右键点击选择Show Package Contents,进入目录Contents, ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-19_57158f4c25373.jpg)       下面再回头继续看HP Scanner Install.app的显示窗口,就在Install HP scanjet G4050.mpkg的下面有一个Packages的目录,进去看看: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-19_57158f4c40b21.jpg)      可以看到里面有好多的mpkg和pkg文件,这些文件都是真正的安装扫描仪驱动和应用程序的安装程序包,现在我们把所有这些安装包文件拖动到Install HP scanjet G4050.mpkg显示窗口的Packages目录中. 看看里面的内容,将所有的用于其它型号的文件删除,如下图中选择的文件。 ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-19_57158f4c687e1.jpg) 看上去好像完了,其实还没有,这是最后一步了。      双击打开Install HP scanjet G4050.mpkg显示窗口中的Info.plist文件, 在Property ListEditor里面显示,找到IFPkgFlagComponentDirectory键,它的值原来是../Packages,现在改为./Contents/Packages, 保存后,就成功了。 ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-19_57158f4c939b2.jpg)  
';