Mar*_*ano 9 macos objective-c launchd
我正在开发一个大多数用户选择"在登录时启动"的OS X应用程序,这是您在菜单栏中找到的那种.
为了在登录时启动它,我正在使用SMLoginItemSetEnabled启动LoginHelper应用程序来打开主应用程序,如本教程所述.
该应用程序无法启动登录时只为少数用户.
我无法重现这个或跟踪原因,但我发现(在用户的机器上):
在应用程序登录时删除/Root/_com.apple.SMLoginItemBookmarks/[myapp]并/Root/[myapp]打开/var/db/launchd.db/com.apple.launchd.peruser.$UID/overrides.plist然后重置启动修复了该问题.此外,我们对文件进行了差异化Data,书签上的内容也发生了变化.
作为参考,我在这里找到了关于overrides.plist的信息.
由于该应用程序同时具有Mac App Store和直接下载版本,因此我怀疑应用程序的多个副本设置为自动登录时启动可能是导致失败的原因,也许这些"书签"正在尝试打开另一个实例应用程序,可能会或可能不会被删除.
现在问题,只要这个应用程序需要保持沙盒:
注意:这是我在StackOverflow上的第一个问题,如果我没有遵循一些建议的礼节,请原谅.
我不知道这个问题的明确解决方案,我什至不知道 overrides.plist。它可能与多个副本有关。据我了解,通过 SMLoginItemSetEnabled 添加登录会设置一个元数据标志,该标志应在启动时启动该捆绑包 ID。然后,Spotlight 在启动时将在文件系统上进行元数据搜索,并查看需要启动哪些 Bundle ID。然后,我猜,它将使用捆绑包 ID 启动启动。在我自己的应用程序 Trickster 中,它使用相同的启动技术,我发现如果我通过应用程序本身启用登录时启动,它可能会弹出这条奇怪的消息,它指的是调试版本。我什至不知道为什么它说第一次。很奇怪。

因此,要启动它们,您必须确保相关捆绑包位于 Spotlight 索引的位置(用户尚未针对这些位置禁用 Spotlight)。通常用户不会禁用 Spotlight,特别是对于 /Applications/,但我只是说一下。
当支持出现时(以及我如何为我设置它,因为我有多个副本),我通常建议的是禁用从应用程序内启动,而是在登录项中手动添加正确的(来自/应用程序)在系统偏好设置中。
| 归档时间: |
|
| 查看次数: |
474 次 |
| 最近记录: |