我正在构建一个可以在 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 配置
放在正确的位置。
最佳答案
正如评论中所建议的那样,安装程序 pkgs 通常是使用此类软件的方式。如果您在 Mac 上手动安装过设备驱动程序、操作系统更新和其他较低级别的软件,您可能对它们很熟悉。
您还可以使用命令行实用程序生成它们,并且不一定需要使用 pvg 的第三方应用程序在评论中建议。 This answer是一个很好的起点。使用命令行工具还可以让您在标准构建过程中自动构建包。
请注意,Apple 自己的旧“PackageMaker”GUI 工具不再适用于较新版本的 macOS/OSX,我强烈建议您不要使用它。
关于macos - 如何分发 OSX cli/server 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47249674/