Skip to content

Repository files navigation

go-update: Build self-updating Go programs godoc reference

Note

The forked version will fix a few minor bugs and add a few new features (using updates for installs when the executables are't there yet or updating with a file path instead of a reader interface)

Original Package Info

Package update provides functionality to implement secure, self-updating Go programs (or other single-file targets) A program can update itself by replacing its executable file with a new version.

It provides the flexibility to implement different updating user experiences like auto-updating, or manual user-initiated updates. It also boasts advanced features like binary patching and code signing verification.

Example of updating from a URL:

import (
"fmt""net/http""github.com/docker-slim/go-update"
)
funcdoUpdate(urlstring) error {
resp, err:=http.Get(url)
iferr!=nil {
returnerr
}
deferresp.Body.Close()
err:=update.Apply(resp.Body, update.Options{})
iferr!=nil {
// error handling
}
returnerr
}

Features

  • Cross platform support (Windows too!)
  • Binary patch application
  • Checksum verification
  • Code signing verification
  • Support for updating arbitrary files

API Compatibility Promises

The master branch of go-update is not guaranteed to have a stable API over time. For any production application, you should vendor your dependency on go-update with a tool like git submodules, gb or govendor.

The go-update package makes the following promises about API compatibility:

  1. A list of all API-breaking changes will be documented in this README.
  2. go-update will strive for as few API-breaking changes as possible.

License

Apache

About

Build self-updating Golang programs - forked to make a few enhancements

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages