Skip to content

steveoh/pro-evergreen

Repository files navigation

pro-evergreen

NuGet version

pro evergreen

Never send an esri addin update to someone via email or a file share again!

Using github releases and release assets, you can automatically download and install new versions.

What? Why?!

Esri is not in the business of creating an addin registry like npm has for node or pypi has for python. This class library makes it simple for you to add the functionality to auto update pro addins for your users. When you add pro evergreen as a reference to your existing addin, you get access to methods that will check the version of the addin running with the version of the addin that you have made available on GitHub. You have access to methods to download and update the addin so when your users restart pro, the new code will be live.

You are in charge of the update flow. You can be passive with a popup that suggests your user to update the addin or you can make the addin update as soon as it knows there is a new version. It is up to you!

Getting Started

Prerequisites

  1. You have a GitHub repository
  2. The GitHub repository has semver releases with a *.esriAddinX file as an asset

Nuget Installation

Usage

var evergreen = new Evergreen("github username", "repository");
var evergreen = new Evergreen("steveoh", "pro-evergreen");

The API has four main uses currently.

  1. evergreen.GetCurrentAddInVersion(); retuns a VersionInformation object that has the addin name, version, and the version of pro it was created with. Will throw a ArgumentOutOfRangeException if it can't find the file or an ArgumentException if it can't find the config.daml.
  2. evergreen.GetLatestReleaseFromGithub(); returns an OctoKit Release object with the information about the GitHub releases for the repository. Will throw a ArgumentNullException if either parameters are empty.
  3. evergreen.IsCurrent(addinVerion, OctoKit Release); returns a bool. It is true if the semantic version of the addin is equal to what is available on GitHub.
  4. evergreen.Update(OctoKit Release); will download the current release, replacing and updating the current addin. Will throw an ArgumentNullException if the release is null.

Example

You can view an addin example in this repository.

This repository also has a sample release.

Options tab with data from evergreen and option to be on beta channel
image

One way to show available updates with evergreen
image

example of showing information evergreen knows about the current add-in
image

showing available update in a growl style notification
image

restart is required after an update
image

Projects using Evergreen

  1. https://github.com/agrc/uic-addin
  2. roemhildtg/arcgis-pro-addins - streetview and selection tools addins

send a pr to add your project!

Publishing new releases

  1. create nuspec and edit output
    • nuget spec ProEvergreen.csproj
  2. edit nuspec release notes
  3. release build
  4. create package
    • nuget pack ProEvergreen.csproj -Properties Configuration=Release
  5. publish
    • nuget push ProEvergreen.{M.m.p}.nupkg {apikey} -Source https://api.nuget.org/v3/index.json