我正在构建一个可以在golang的osx服务器模式下运行的cli应用程序。我来自服务器世界,并不知道如何正确地为osx分发消费者cli工具。 cli可以作为一项服务运行,可以通过launchd轻松实现。
启动配置:
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>focus-daemon</string>
<key>RunAtLoad</key>
<true />
<key>Program</key>
<string>/usr/local/bin/focus</string>
</dict>
</plist>
构建和运行也很简单:
go build main.go
sudo cp main /usr/local/bin/focus
rm main
sudo chown root /usr/local/bin/focus
sudo chmod 4555 /usr/local/bin/focus
cp focus.plist ~/Library/LaunchAgents/com.21stio.focus.plist
launchctl load ~/Library/LaunchAgents/com.21stio.focus.plist
构建过程时,需要sudo在二进制文件上设置sbit。
我不希望用户必须运行.sh脚本。也许我可以使用brew和/或DMG。但我不知道如何将Launchd config
置于正确的位置。
答案 0 :(得分:1)
正如评论中所建议的那样,安装程序pkgs通常是使用此类软件的方式。如果您在Mac上手动安装了设备驱动程序,操作系统更新和其他低级软件,您可能对它们很熟悉。
您也可以使用命令行实用程序生成它们,并且不一定需要使用评论中pvg建议的第三方应用程序。 This answer是一个很好的起点。使用命令行工具还可以将程序包构建自动化为标准构建过程的一部分。
请注意,Apple自己的旧“PackageMaker”GUI工具不再适用于较新版本的macOS / OSX,我强烈建议您不要使用它。