我有一个我需要为其创建安装程序的应用程序,并且所有安装程序需要做的事情(除了复制应用程序之外)运行的是不属于应用程序本身的脚本(或可执行文件)。有关如何做到这一点的任何帮助?我在要求标签中看到脚本结果操作,操作中还有预安装操作 标签,其中包含打开文件操作。这些中的任何一个都可以完成这项工作,还是应该在其他地方寻找?
答案 0 :(得分:21)
Here是一个很好的操作方法
安装过程中可以启动7种类型的脚本:
<强> InstallationCheck:强> 此脚本在安装过程开始时启动(甚至在“身份验证”步骤之前)。它可用于检查是否可以在此计算机上安装Package。
<强> VolumeCheck:强> 此脚本在“选择目标”步骤中启动。它用于确定可以安装Package的卷。
<强>预检:强> 在用户单击“安装”按钮后立即启动此脚本。
预安装/预升级: 如果有预检脚本,则在预检脚本之后启动此脚本(在单个软件包安装的情况下);否则只需在用户点击“安装”按钮后。
如您所见,这里有两种类型的脚本。从未安装Package时启动预安装(从Installer.app的角度来看),在安装Package时启动预升级。要确定是否已安装Package,Installer.app将查看以下目录的内容:/ Library / Receipts。如果其中有一个名为PackageName.pkg的文件,那么Package已经安装,否则就是第一次安装。
postinstall / postupgrade: 安装包中的文件后启动此脚本。请参阅(预安装/预升级)以查看启动了哪一个。
<强>飞行后:强> 此脚本在postinstall / postupgrade脚本之后或安装包时启动。
答案 1 :(得分:5)
我设法将Shell脚本包含在我使用PackageMaker创建的包中。我需要在安装后将我的应用程序添加到登录项中,因此我创建了一个名为postflight.sh
的脚本并将其放入文件夹中。 (它似乎适用于任何位置)
然后在我的包中,我有应用程序。在内容,包:应用程序中,在“脚本”选项卡中,我选择了“Postflight”部分中的postflight.sh
。而已。
我的postflight.sh
以
#!/bin/bash
然后它有一些脚本将应用程序放入登录项目。当我没有那个时,我可以制作包,但安装失败了。希望这有用。
答案 2 :(得分:2)
这篇PackageMaker How-To文章已过时,但它有一些关于中途脚本非常有用的信息。查找显示从shell和perl看到的命令行变量的表,以及一些有用的退出状态值。