Macos SMLoginItemSetEnabled返回成功,但不返回’;不添加登录项
我正在尝试向macOS应用程序添加登录项。该应用程序在其plist中设置为代理,因此它没有停靠图标,在启动时隐藏其主窗口,并在状态栏中放置一个图标以提供其UI 要添加登录项,我必须:Macos SMLoginItemSetEnabled返回成功,但不返回’;不添加登录项,macos,service-management,Macos,Service Management,我正在尝试向macOS应用程序添加登录项。该应用程序在其plist中设置为代理,因此它没有停靠图标,在启动时隐藏其主窗口,并在状态栏中放置一个图标以提供其UI 要添加登录项,我必须: 在项目中创建了新的macOS应用程序(启动助手) 在基本应用程序中复制期间禁用去除调试符号 将复制文件阶段添加到基本应用程序,目标设置为包装程序,子路径设置为目录/库/登录项,并将帮助程序应用程序添加到要复制的文件列表中 将助手应用程序设置为“仅背景” 为helper应用程序启用了跳过安装 已从helper应用程
- 在项目中创建了新的macOS应用程序(启动助手)
- 在基本应用程序中复制期间禁用
去除调试符号
- 将
阶段添加到基本应用程序,目标设置为复制文件
,子路径设置为包装程序
,并将帮助程序应用程序添加到要复制的文件列表中目录/库/登录项
- 将助手应用程序设置为“仅背景”
- 为helper应用程序启用了
跳过安装
- 已从helper应用程序中删除该窗口
- 将代码添加到助手应用程序的
以启动基础应用程序ApplicationIDFinishLaunching
- 在基础应用程序中添加了一个选项,可调用
以允许切换登录项SMLoginItemSetEnabled((uu-bridge-CFStringRef)@“com.mydomain.MyApp-Helper”,enabled)
- 为基本应用程序和辅助应用程序启用了沙盒和代码签名
- 生成项目并将应用程序复制到/应用程序
- 从/应用程序启动应用程序,并启用登录时启动的选项
SMLoginItemSetEnabled
成功,但helper应用程序不会在登录时运行,或者如果运行,则不会启动基础应用程序
我查看了基本应用程序包的内部,助手应用程序就在那里。我可以手动运行它,它会启动基本应用程序。我甚至可以通过系统首选项手动将其添加为登录项,它仍然会启动基本应用程序。因此,即使
SMLoginItemSetEnabled
返回true
,它似乎并没有实际安装登录项。或者,如果是,则无法从登录项启动和运行基本应用程序,即使我手动启动和运行基本应用程序也是如此。解决方案是删除基本应用程序和帮助程序应用程序的DerivedData文件夹。登录项似乎对要打开的应用程序的哪个副本感到困惑,可能是试图从DerivedData中打开一个。删除这些文件夹并仅将应用程序保留在/Applications中,可以让helper应用程序从登录项启动基本应用程序。我遇到了同样的问题。另外请注意,在删除DerivedData文件夹和测试注销/登录之前,请退出Xcode,因为如果项目打开,它将立即重新创建空产品,这似乎足以让它感到困惑。还要确保完全删除文件夹,而不仅仅是移动到垃圾箱。我生命中只有6个小时。