2

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

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

更多细节:

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

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

"#!/bin/sh

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

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

PS 在我尝试让它工作的一些尝试中,PackageMaker 崩溃了。

有人可以帮忙吗?

4

2 回答 2

2

您可以查看安装日志。

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

于 2011-10-25T11:22:28.097 回答
0

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

exit 0

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

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

于 2012-06-01T07:51:43.733 回答