我的启动守护进程(和启动代理)在 macOS 系统范围内安装。我使用放置在以下文件中的以下 plist 文件(例如,用于守护程序)
/Library/LaunchDaemons/com.example.MyDaemon.plist
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>MachServices</key>
<dict>
<key>com.example.MyDaemon.launch.agent</key>
<true/>
</dict>
<key>Disabled</key>
<false/>
<key>Label</key>
<string>com.example.MyDaemon</string>
<key>Program</key>
<string>/Library/PrivilegedHelperTools/com.example/MyDaemon</string>
<key>ProgramArguments</key>
<array>
<string>-d</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
安装上面的 plist 时,或者当用户重新登录时,macOS 会显示这个不太友好的弹出窗口:
然后如果我转到设置 -> 常规 -> 登录项,它也会显示在那里:
我知道这是出于安全原因显示的。但我很好奇:
“MyDaemon”是一个可以在后台运行的项目。您可以在登录项设置中进行管理
我可以在弹出窗口中将“MyDaemon”更改为更好的描述吗?
来自身份不明的开发者的项目。
我注意到其他项目没有这个消息。我做错了什么?
获得它的通常方法是使用服务管理 API 来安装守护程序,因此
SMAppService
或 SMJobBless
,具体取决于操作系统版本。然后它从嵌入它的应用程序继承图标和名称。
你也可以通过给你的守护程序二进制文件一个 Info.plist 来实现类似的东西,例如通过将它嵌入到二进制文件的
__info_plist
__TEXT
部分或者将它放在一个包中或将它变成一个应用程序捆。然后设置 CFBundleDisplayName
、CFBundleName
或 其他听起来可能的键,看看这是否会改变它的显示方式。
“身份不明的开发者”部分是由于缺少(有效的)代码签名。如果您的守护程序二进制文件已使用开发者 ID 证书正确签名并经过公证(或通过应用商店分发),您的应用名称(见上文)或您的开发者帐户名称将改为显示。
例如,还有 Zoom 不显示该弹出窗口。
Zoom 通过系统管理 API 安装它的助手,调用 API 时需要显式授权,也许在这种情况下不需要双重选择?