I think like one user per year using that link in menu we provide. It is more for our internal fast install use. Anyway there is way to download and install unitypackage via c#. You might include it in the SpineRuntime so that users can fast update to latest. This option would require fixed download links but could speed up updates installation. I will share code tomorrow.
private static readonly Uri uriSpineRuntime = new Uri("https://esotericsoftware.com/files/runtimes/unity/spine-unity.unitypackage");
private static readonly Uri uriSpineRuntimeBeta = new Uri("https://esotericsoftware.com/files/runtimes/unity/spine-unity-beta.unitypackage");
[MenuItem("Window/Spine/Update Spine Runtime")]
static public void DoUpdateSpineRuntime()
{
StartBackgroundTask(Download(uriSpineRuntime));
}
[MenuItem("Window/Spine/Update Spine Runtime (Beta)")]
static public void DoUpdateSpineRuntimeBeta()
{
StartBackgroundTask(Download(uriSpineRuntimeBeta));
}
static void StartBackgroundTask(IEnumerator update, Action end = null)
{
EditorApplication.CallbackFunction closureCallback = null;
closureCallback = () =>
{
try
{
if (update.MoveNext() == false)
{
if (end != null)
end();
EditorApplication.update -= delegate { closureCallback(); };
}
}
catch (Exception ex)
{
if (end != null)
end();
Debug.LogException(ex);
EditorApplication.update -= delegate { closureCallback(); };
}
};
EditorApplication.update += closureCallback;
}
static IEnumerator Download(Uri uri)
{
yield return Download(uri.ToString());
}
static IEnumerator Download(string url)
{
var www = UnityWebRequest.Get(url.ToString());
yield return www.SendWebRequest();
if (www.isHttpError || www.isNetworkError)
{
Debug.LogError(www.error);
}
else
{
SaveAndImport(www.downloadHandler.data);
}
}
static void SaveAndImport(byte[] bytes)
{
var location = FileUtil.GetUniqueTempPathInProject();
// Extension is required for correct Windows import.
location = Path.ChangeExtension(location, ".unitypackage");
File.WriteAllBytes(location, bytes);
AssetDatabase.ImportPackage(location, false);
}