module
2.0.0-beta.1+incompatible
Repository: https://github.com/silthus/go-selfupdate.git
Documentation: pkg.go.dev
# README
go-selfupdate
Enable your Golang applications to self update. Inspired by Chrome based on Heroku's hk.
Features
- Tested on Mac, Linux, Arm, and Windows
- Creates binary diffs with bsdiff allowing small incremental updates
- Falls back to full binary update if diff fails to match SHA
QuickStart
Install library and update/patch creation utility
go get -u github.com/sanbornm/go-selfupdate/...
Enable your App to Self Update
var updater = &selfupdate.Updater{
CurrentVersion: version,
ApiURL: "http://updates.yourdomain.com/",
BinURL: "http://updates.yourdomain.com/",
DiffURL: "http://updates.yourdomain.com/",
Dir: "update/",
CmdName: "myapp", // app name
}
if updater != nil {
go updater.BackgroundRun()
}
Push Out and Update
go-selfupdate myapp 1.2
This will create a folder in your project called, public you can then rsync or transfer this to your webserver or S3.
If you are cross compiling you can specify a directory:
go-selfupdate /tmp/mybinares/ 1.2
The directory should contain files with the name, $GOOS-$ARCH. Example:
windows-386
darwin-amd64
linux-arm
If you are using goxc you can output the files with this naming format by specifying this config:
"OutPath": "{{.Dest}}{{.PS}}{{.Version}}{{.PS}}{{.Os}}-{{.Arch}}",
# Packages
No description provided by the author
No description provided by the author
Update protocol:
GET hk.heroku.com/hk/linux-amd64.json
200 ok { "Version": "2", "Sha256": "..." // base64 }
then
GET hkpatch.s3.amazonaws.com/hk/1/2/linux-amd64
200 ok [bsdiff data]
or
GET hkdist.s3.amazonaws.com/hk/2/linux-amd64.gz
200 ok [gzipped executable data]
.