Skip to content

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

License

Notifications You must be signed in to change notification settings

mintoolkit/go-update

This branch is 2 commits ahead of slimtoolkit/go-update:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

2938d74 · Jul 7, 2024

History

66 Commits
Jul 7, 2024
Aug 10, 2015
Apr 22, 2019
Aug 10, 2015
Jul 7, 2024
Jul 7, 2024
Jul 7, 2024
Jul 7, 2024
Apr 26, 2014
Apr 26, 2014
Jul 7, 2024
Aug 10, 2015

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/mintoolkit/go-update"
)

func doUpdate(url string) error {
    resp, err := http.Get(url)
    if err != nil {
        return err
    }
    defer resp.Body.Close()
    err := update.Apply(resp.Body, update.Options{})
    if err != nil {
        // error handling
    }
    return err
}

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

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 100.0%