在PackageMaker中使用脚本(Mac OS X)

时间:2011-10-25 10:49:01

标签: macos scripting packagemaker

我正在尝试在Mac上为我的应用程序构建一个安装包(有两个.app-s)。其中一个是GUI,另一个是代理(服务)。安装包必须在安装结束时运行脚本(这是我知道可以完成的唯一方法),以便代理将作为代理安装。还有一个.plist文件安装在/ Library / LaunchAgents中,但这就是PackageMaker自动执行的操作(即不需要脚本)。

问题是......我不能让脚本运行。我最后得到“安装失败”。 我不知道问题是什么。有人可以帮忙吗?

更多细节:

  • 我正在尝试在postflight步骤(安装完成后)执行此操作。只是一个猜测......我是否需要使用相同的名称调用我的文件(例如,postflight)?
  • 我想这是我设置的正确目录和路径。经过几十次尝试,在最后一次尝试中,我将PackageMaker文档设置为“相对路径”(在同一文件夹中我有脚本)。对于可能导致问题的路径,我应该知道一些重要的事情吗? (事实上​​,构建是成功的)
  • 我是否必须编写特定的内容以允许执行脚本?我有以下脚本: MyInstall.sh

包含以下内容(不带引号):

“#!/ bin / sh的

sudo launchctl load /Library/LaunchAgents/com.MyCompany.MyService.plist“

(请注意com.Mycompany.MyService.plist已经存在 - 它将它安装在那里)。

P.S。在我尝试使其成功的一些尝试中,PackageMaker粉碎了。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

您可以查看安装日志。

安装程序应用程序运行时,请转到窗口菜单,然后选择安装日志。这将打开一个单独的日志窗口。在此窗口中,从组合框中选择全部显示。您将能够看到脚本失败的原因。

答案 1 :(得分:0)

我自己也有过这样的经历。这就是我发现的。 为了使安装成功,你的sript必须明确地返回0(即“成功”)。 如果脚本中的命令结果不为0且您没有调用

exit 0

作为最后一个脚本,你的安装会告诉你它失败了。

如果您不使用脚本的返回值,并且您确定scrpit工作正常 - 只需在脚本的最后一行添加“退出0 ”。