一、介绍

   

      Windows下面开发好的应用程序要进行分发时有很多打包工具可供选择,如Inno Setup, InstallShield, NSIS, Advanced Installer, Qt Installer Framework等。甚至很多人还选择结合WinRar+Bat来创建应用程序安装包。Mac OSX下好像可供选择的工具不多,功能强大的工具大部分都需要进行购买。DMG是Mac OS X 上的一种压缩镜像文件格式,类似于Windows上常见的ISO文件,可以作为一种打包工具。直接让用户加载镜像即可安装,不失为一种较好的应用分发方式。很多开发商也都是这么做的:

ruby mac安装包 mac的安装包_Mac

 

ruby mac安装包 mac的安装包_安装包_02

      此外,pkg是Mac OS X平台下另一种常见的安装包格式。类似于Windows平台的安装包程序。pkg包通常具备一系列安装流程,引导用户完成安装过程。制作pkg安装的工具有XCode自带的Package Maker(新版的XCode好像不包含了),Packages。这篇博客主要来讲讲Packages的使用过程。Packages是一款开源的安装包制作工具,能够指定文件的安装路径、定制安装流程、资源国际化、插件机制、执行安装脚本,能够满足大部分的安装场景。

二、使用

      Packages有两种模式:一种称为Distribution,这种模式下的安装包可以包含多个组件,分别指定安装位置即可;而Raw Package则适用于只有一个安装组件(package)的情况下使用,是Distribution的一种简化形式。这里要解释下Packages中“组件(package)”的含义。其实在很多的安装包制作软件中,都存在“组件(package)”的概念。一个组件(package)就是一个具备特定安装属性的部分,是对需要安装的程序的一个逻辑划分。比如一个安装包中包含两部分,一部分需要安装到系统目录,一部分安装到用户目录。从逻辑上就可以划分为两个组件(package),分别为它们指定不同的安装属性。

ruby mac安装包 mac的安装包_安装包_03

为Packages工程选定目录,这里要注意的是,最好将“Project Directory”选定为安装文件所在的目录。否则容易出现安装包运行失败的现象。当然,"Project Name"可以随意决定。

ruby mac安装包 mac的安装包_安装包_04

新建项目完成后即进入到项目主页,默认看到的是Settings页面,可以设置安装包名(也即编译出来的pkg文件名),安装包输出位置,安装包格式等信息。

ruby mac安装包 mac的安装包_xcode_05

标准的安装过程分为:Introduction, Read Me(可选), License(可选), Destination Select, Installation Type, Installation, Summary七个步骤。右侧下面的加号是可以为每个步骤定制文本信息的。主要的每添加一条信息前面都有一个国旗标志,这是国际化的选项。Packages制作出来的安装包会针对系统语言自动显示对应的国际化资源。

ruby mac安装包 mac的安装包_操作系统_06

这是安装步骤定制过程的最后一步。

ruby mac安装包 mac的安装包_Mac_07

开始定制安装组件(package)。新建项目后会有一个默认的和项目同名的组件(package),可设置组织标识符、版本号、执行动作和安装选项。其中最重要的是Payload页面。

ruby mac安装包 mac的安装包_操作系统_08

Payload页面用于指定安装文件。Contents中会显示出系统所有的安装位置,如下选择/Library/QuickLook作为安装路径。

ruby mac安装包 mac的安装包_xcode_09

选中文件夹后即点击下面的加号添加需要安装的文件,这里作为示例添加了一个pdf文件。默认的安装目录是根目录,这里我们添加完文件之后,点击Settings中的Set按钮重置。这样,在QuickLook文件夹图标上就会出现一个准星图标,表示文件将安装到这个位置。

ruby mac安装包 mac的安装包_Mac_10

新建了几个组件(package)作为示例。

ruby mac安装包 mac的安装包_xcode_11

对于某些应用在安装时可能需要做一些额外的操作,这里可以指定执行脚本。分为安装前和安装后执行。

ruby mac安装包 mac的安装包_安装包_12


添加几个组件(package)之后,可以为每个package指定包名称和描述,这些信息在安装时会显示给用户看!

ruby mac安装包 mac的安装包_Mac_13

安装包编译生成之后即可开始运行测试了:

ruby mac安装包 mac的安装包_ruby mac安装包_14

Read Me和License的内容都可以写到一个txt文本中,在安装步骤设置中指定好即可。

ruby mac安装包 mac的安装包_操作系统_15

ruby mac安装包 mac的安装包_安装包_16

指定安装位置,并不是指组件安装位置,而是指安装到哪个物理磁盘中去。

ruby mac安装包 mac的安装包_xcode_17

ruby mac安装包 mac的安装包_安装包_18

哈,安装流程成功结束!到指定的安装位置查看,妥妥的安装文件都出现了!

ruby mac安装包 mac的安装包_操作系统_19

三、小结

     总的来说,Packages是一个非常好用的工具。其功能可以满足绝大部分的安装场景,操作简单,界面简洁。此外,Packages还支持插件哦,通过XCode中的Installer Plugins模板可创建各式各样的插件来增强Packages的功能,定制安装过程。作为开源社区的一份子,实在是一款良心之作!