Mac OS X:刷新服务菜单在终端中工作,但不在安装后脚本中

时间:2012-09-28 13:28:18

标签: macos packagemaker

我有一个OSX应用程序,为其他应用程序提供服务菜单。到目前为止,此工作正常,菜单已激活并在用户安装应用程序并注销并重新登录后可用。(see similiar post

我知道当触发服务菜单代理(pbs)以通过打开终端并运行来扫描已更改的服务时,退出并退回已过时     /系统/图书馆/ CoreServices / PBS (这也可以在没有启动新应用程序的情况下工作)

所以我想提供一个安装程序(.pkg),它运行“pbs”作为安装后脚本。令人惊讶的是,在安装后运行“bps”只有在应用程序启动之前才有效:     #! / bin / sh的

sleep 3
open /Applications/MyApp.app
sleep 3
/System/Library/CoreServices/pbs
exit 0

不幸的是,(由于应用程序的具体原因)我不想直接从安装程序启动我的应用程序。有谁知道为什么安装后的抄写行为与终端不同?

2 个答案:

答案 0 :(得分:0)

根据安装程序所需的权限,安装后脚本可以以root用户身份运行。尝试:

sleep 3
su -l "${USER}" -c "open /Applications/MyApp.app"
sleep 3
su -l "${USER}" -c "/System/Library/CoreServices/pbs"
exit 0

答案 1 :(得分:0)

最终,作为一种解决方法,我将隐藏启动应用程序并在运行pbs之前再次停止它。仍期待更好的解决方案。