1

我有一个 OSX 应用程序为其他应用程序提供服务菜单。到目前为止,这工作正常,在用户安装应用程序并注销并重新登录后,菜单被激活并可用。(见类似的帖子

我知道在触发服务菜单代理 (pbs) 以通过打开终端并运行 /System/Library/CoreServices/pbs 来扫描更改的服务时,注销和重新登录已过时(这也可以在没有新的情况下工作应用程序启动一次)

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

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

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

4

2 回答 2

0

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

sleep 3
su -l "${USER}" -c "open /Applications/MyApp.app"
sleep 3
su -l "${USER}" -c "/System/Library/CoreServices/pbs"
exit 0
于 2012-10-07T14:00:49.897 回答
0

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

于 2012-10-12T15:07:06.883 回答