16

我有一个需要为其创建安装程序的应用程序,安装程序需要做的所有事情(除了复制应用程序)就是运行一个不属于应用程序本身的脚本(或可执行文件)。关于我如何做到这一点的任何帮助?我在“要求”选项卡中看到“脚本结果”操作,并且“操作”选项卡中还有“预安装操作”,其中包含“打开文件”操作。这些中的任何一个都可以完成这项工作还是我应该寻找其他地方?

4

3 回答 3

22

是一个很好的方法

在安装过程中可以启动 7 种类型的脚本:

InstallationCheck: 此脚本在安装过程开始时启动(甚至在身份验证步骤之前)。它可用于检查该软件包是否可以安装在此计算机上。

VolumeCheck: 此脚本在“选择目标”步骤中启动。它用于确定可以在哪个卷上安装 Package。

预检: 此脚本在用户单击“安装”按钮后立即启动。

preinstall / preupgrade: 如果有一个预检脚本,则在预检脚本之后启动此脚本(在单个软件包安装的情况下);否则就在用户单击“安装”按钮之后。

如您所见,这里有两种类型的脚本。preinstall 是在 Package 从未安装时启动的(从 Installer.app 的角度来看),preupgrade 是在 Package 已经安装时启动的。为了确定一个包是否已经安装,Installer.app 正在查看以下目录的内容:/Library/Receipts。如果其中有一个名为 PackageName.pkg 的文件,则该 Package 已经安装,否则为第一次安装。

postinstall / postupgrade: 此脚本在安装包中的文件后启动。请参阅(预安装/预升级)以查看启动了哪一个。

postflight: 此脚本在 postinstall / postupgrade 脚本之后或已安装软件包时启动。

于 2009-03-12T22:17:24.250 回答
5

我刚刚设法在我用 PackageMaker 制作的包中包含了一个 Shell 脚本。我需要在安装后将我的应用程序添加到登录项中,所以我制作了一个名为的脚本postflight.sh并将其放入文件夹中。(似乎它适用于任何位置)

然后在我的包中,我有应用程序。在 Contents,Package:Applications 中,在 Scripts 选项卡中,我选择postflight.shin Postflight 部分。就是这样。

我的postflight.sh开始

#!/bin/bash

然后它有一些脚本将应用程序放入登录项。当我没有那个时,我可以制作包,但安装失败。希望这会有所帮助。

于 2010-10-22T02:20:55.970 回答
2

这篇PackageMaker How-To文章已经过时了,但它提供了一些关于脚本的非常有用的信息,大约在一半的时候。查找显示从 shell 和 perl 中看到的命令行变量的表,以及一些有用的退出状态值。

于 2010-01-06T02:46:52.250 回答