如何在用户登录时以编程方式启动应用程序?
How to programmatically start an application at user login?
我第一次尝试将 C# Windows 应用程序移植到 macOS 12 Monterey。它的一项功能是设置自动启动,这是通过 Windows 注册表完成的。我发现在 macOS 上这是通过 launchd
/launchctl
完成的,所以我尝试先手动设置它。我已使用以下配置将 .plist
文件添加到 /Library/LaunchAgents
文件夹:
<plist version="1.0">
<dict>
<key>Label</key>
<string>application</string>
<key>RunAtLoad</key>
<true />
<key>Program</key>
<string>/Users/user/Desktop/osx-x64/application</string>
</dict>
</plist>
我试图通过带有 launchctl load /Users/user/Library/LaunchAgents/application.plist
的终端启用此配置,但是总是抛出 Load failed: 5: Input/output error
。发现它是一个已弃用的函数,我尝试使用此文件 launchctl kickstart
,结果是 Could not find service "application" in domain for user gui: 501
。这可能与文件权限有关吗?
我找到的关于此的大部分信息都指的是不再存在的文档,因此任何有关如何在 Monterey 上实现自动启动的信息都将不胜感激。
Input/output 错误表示您提供的 .plist 文件在 xml 方式或目标方式中不正确。
您可以阅读所有这些内容 here,我只会 post 一些建议,这些建议应该对这种特定情况有所帮助。其中一些不是完成这项工作所必需的,但相信我,最好还是留在他们身边。
- 使用完整的 xml header。 (上面网站上的例子)
- 标签值必须与plist文件名相同。它也几乎总是一个 bundle id。所以,设为com.my.application.plist,Label字段的值应该是com.my.application
- 不要在不需要的地方做空格,例如真/,不真/
- 程序路径应该是unix二进制的路径。尝试一下,如果您可以使用此路径从终端启动您的应用程序 /Users/user/Desktop/osx-x64/application
如果不是,您需要先解决这个问题。
这应该适合你。
我第一次尝试将 C# Windows 应用程序移植到 macOS 12 Monterey。它的一项功能是设置自动启动,这是通过 Windows 注册表完成的。我发现在 macOS 上这是通过 launchd
/launchctl
完成的,所以我尝试先手动设置它。我已使用以下配置将 .plist
文件添加到 /Library/LaunchAgents
文件夹:
<plist version="1.0">
<dict>
<key>Label</key>
<string>application</string>
<key>RunAtLoad</key>
<true />
<key>Program</key>
<string>/Users/user/Desktop/osx-x64/application</string>
</dict>
</plist>
我试图通过带有 launchctl load /Users/user/Library/LaunchAgents/application.plist
的终端启用此配置,但是总是抛出 Load failed: 5: Input/output error
。发现它是一个已弃用的函数,我尝试使用此文件 launchctl kickstart
,结果是 Could not find service "application" in domain for user gui: 501
。这可能与文件权限有关吗?
我找到的关于此的大部分信息都指的是不再存在的文档,因此任何有关如何在 Monterey 上实现自动启动的信息都将不胜感激。
Input/output 错误表示您提供的 .plist 文件在 xml 方式或目标方式中不正确。
您可以阅读所有这些内容 here,我只会 post 一些建议,这些建议应该对这种特定情况有所帮助。其中一些不是完成这项工作所必需的,但相信我,最好还是留在他们身边。
- 使用完整的 xml header。 (上面网站上的例子)
- 标签值必须与plist文件名相同。它也几乎总是一个 bundle id。所以,设为com.my.application.plist,Label字段的值应该是com.my.application
- 不要在不需要的地方做空格,例如真/,不真/
- 程序路径应该是unix二进制的路径。尝试一下,如果您可以使用此路径从终端启动您的应用程序 /Users/user/Desktop/osx-x64/application 如果不是,您需要先解决这个问题。
这应该适合你。