我正在开发一个沙盒化的Mac应用程序,遇到了一个非常奇怪的问题。其中一个要求是用户可以在系统启动时启动该应用程序。为此,我使用SMLoginItemSetEnabled(),如http://blog.timschroeder.net/2012/07/03/the-launch-at-login-sandbox-project/所述。
当用户第一次启动应用程序并启用此选项时,我可以看到使用launchctl list添加了一个条目。当我重新启动系统时,应用程序没有被启动。更奇怪的是,在使用launchctl list找到的条目已经消失。然而,在/private/var/db/launchd.db/com.apple.launchd.peruser.501/overrides.plist中仍然有一个类似的条目,键为Disabled,值为false。
当我手动启动应用程序并再次设置选项以自动启动时,该条目将再次在launchctl list中可用。当我重新启动系统时,应用程序将自动启动。总之,由于某种原因,SMLoginItemSetEnabled()仅在第二次运行应用程序时起作用。因此,它看起来类似于这个问题: https://stackoverflow.com/questions/16354295/sandbox-app-with-loginitems-only-work-after-second-app-launch。然而,没有提供解决方案。
当用户第一次启动应用程序并启用此选项时,我可以看到使用launchctl list添加了一个条目。当我重新启动系统时,应用程序没有被启动。更奇怪的是,在使用launchctl list找到的条目已经消失。然而,在/private/var/db/launchd.db/com.apple.launchd.peruser.501/overrides.plist中仍然有一个类似的条目,键为Disabled,值为false。
当我手动启动应用程序并再次设置选项以自动启动时,该条目将再次在launchctl list中可用。当我重新启动系统时,应用程序将自动启动。总之,由于某种原因,SMLoginItemSetEnabled()仅在第二次运行应用程序时起作用。因此,它看起来类似于这个问题: https://stackoverflow.com/questions/16354295/sandbox-app-with-loginitems-only-work-after-second-app-launch。然而,没有提供解决方案。