我正在尝试将登录项添加到 macOS 应用程序。该应用程序在其 plist 中设置为代理,因此它没有停靠图标,在启动时隐藏其主窗口,并在状态栏中放置一个图标以提供其 UI。
要添加登录项,我有:
- 在项目中创建了一个新的 macOS 应用程序(启动助手)
Strip Debug Symbols During Copy
在基本应用程序中禁用- 向基础应用程序添加了一个
Copy Files
阶段,目标设置为Wrapper
,子路径设置为Contents/Library/LoginItems
,并将帮助应用程序添加到要复制的文件列表中 - 仅将助手应用程序设置为后台
Skip Install
为助手应用启用- 从帮助应用程序中删除了窗口
- 将代码添加到帮助应用程序
applicationDidFinishLaunching
以启动基本应用程序 - 向基本应用程序添加了一个选项以调用
SMLoginItemSetEnabled((__bridge CFStringRef)@"com.mydomain.MyApp-Helper", enabled)
以允许切换登录项 - 为基础应用和辅助应用启用沙箱和代码设计
- 构建项目并将应用程序复制到 /Applications
- 从 /Applications 启动应用程序并启用在登录时启动的选项
问题是,虽然我从SMLoginItemSetEnabled
成功的应用程序中获得了反馈,但帮助应用程序在登录时没有运行,或者如果它运行,它不会启动基本应用程序。
我查看了基本应用程序包,助手应用程序就在那里。我可以手动运行它,它会启动基本应用程序。我什至可以通过系统偏好设置手动将其添加为登录项,它仍然会启动基本应用程序。所以看起来即使SMLoginItemSetEnabled
正在返回true
,它实际上并没有安装登录项。或者,如果是,它无法从登录项启动和运行基本应用程序,即使我手动执行它也可以。