ProEvergreen 3.0.0
dotnet add package ProEvergreen --version 3.0.0
NuGet\Install-Package ProEvergreen -Version 3.0.0
<PackageReference Include="ProEvergreen" Version="3.0.0" />
<PackageVersion Include="ProEvergreen" Version="3.0.0" />
<PackageReference Include="ProEvergreen" />
paket add ProEvergreen --version 3.0.0
#r "nuget: ProEvergreen, 3.0.0"
#:package ProEvergreen@3.0.0
#addin nuget:?package=ProEvergreen&version=3.0.0
#tool nuget:?package=ProEvergreen&version=3.0.0
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
- You have a GitHub repository
- The GitHub repository has semver releases with a
*.esriAddinX
file as an asset
Nuget Installation
- NuGet package manager: Search for
ProEvergreen
https://www.nuget.org/packages/ProEvergreen/ - Powershell: `Install-Package ProEvergreen
Usage
var evergreen = new Evergreen("github username", "repository");
var evergreen = new Evergreen("steveoh", "pro-evergreen");
The API has four main uses currently.
evergreen.GetCurrentAddInVersion();
retuns aVersionInformation
object that has the addin name, version, and the version of pro it was created with. Will throw aArgumentOutOfRangeException
if it can't find the file or anArgumentException
if it can't find the config.daml.evergreen.GetLatestReleaseFromGithub();
returns an OctoKitRelease
object with the information about the GitHub releases for the repository. Will throw aArgumentNullException
if either parameters are empty.evergreen.IsCurrent(addinVerion, OctoKit Release);
returns abool
. It istrue
if the semantic version of the addin is equal to what is available on GitHub.evergreen.Update(OctoKit Release);
will download the current release, replacing and updating the current addin. Will throw anArgumentNullException
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
One way to show available updates with evergreen
example of showing information evergreen knows about the current add-in
showing available update in a growl style notification
restart is required after an update
Projects using Evergreen
- https://github.com/agrc/uic-addin
- roemhildtg/arcgis-pro-addins - streetview and selection tools addins
send a pr to add your project!
Publishing new releases
- create nuspec and edit output
dotnet pack .\ProEvergreen\ProEvergreen.csproj
- edit nuspec
- publish
dotnet nuget push ProEvergreen.{M.m.p}.nupkg --api-key {apikey} --source https://api.nuget.org/v3/index.json
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- Microsoft.CSharp (>= 4.7.0)
- Octokit (>= 14.0.0)
- Semver (>= 3.0.0)
- System.Data.DataSetExtensions (>= 4.5.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Migrate to NETStandard2.1