我有一个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
不幸的是,(由于应用程序的具体原因)我不想直接从安装程序启动我的应用程序。有谁知道为什么安装后的抄写行为与终端不同?
答案 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
之前再次停止它。仍期待更好的解决方案。