diff --git a/src/Velopack.Deployment/GitHubRepository.cs b/src/Velopack.Deployment/GitHubRepository.cs index fc2d6577..d7dad373 100644 --- a/src/Velopack.Deployment/GitHubRepository.cs +++ b/src/Velopack.Deployment/GitHubRepository.cs @@ -115,7 +115,6 @@ public class GitHubRepository : SourceRepository { @@ -124,12 +123,10 @@ public class GitHubRepository : SourceRepository { - var data = new ReleaseAssetUpload("RELEASES", "application/octet-stream", new MemoryStream(ms.ToArray()), TimeSpan.FromMinutes(1)); + var data = new ReleaseAssetUpload("RELEASES", "application/octet-stream", new MemoryStream(legacyReleasesBytes), TimeSpan.FromMinutes(1)); await client.Repository.Release.UploadAsset(release, data, CancellationToken.None); }, "Uploading legacy RELEASES (compatibility)"); } diff --git a/src/Velopack.Deployment/_ObjectRepository.cs b/src/Velopack.Deployment/_ObjectRepository.cs index 45cdb18c..a524455b 100644 --- a/src/Velopack.Deployment/_ObjectRepository.cs +++ b/src/Velopack.Deployment/_ObjectRepository.cs @@ -1,4 +1,4 @@ -using System.Text; +using System.Text; using Microsoft.Extensions.Logging; using Velopack.Packaging; @@ -85,21 +85,19 @@ public abstract class ObjectRepository : DownRepository !entry.IsDelta), fs); - } - await UploadObject(client, legacyKey, new FileInfo(tmpReleases2), true, noCache: true); -#pragma warning restore CS0618 // Type or member is obsolete #pragma warning restore CS0612 // Type or member is obsolete + using var _2 = Utility.GetTempFileName(out var tmpReleases2); + File.WriteAllText(tmpReleases2, ReleaseEntryHelper.GetLegacyMigrationReleaseFeedString(newReleaseFeed)); + await UploadObject(client, legacyKey, new FileInfo(tmpReleases2), true, noCache: true); if (toDelete.Length > 0) { Log.Info($"Retention policy about to delete {toDelete.Length} release(s)..."); diff --git a/src/Velopack.Packaging/ReleaseEntryHelper.cs b/src/Velopack.Packaging/ReleaseEntryHelper.cs index 807a9821..b78ca0b8 100644 --- a/src/Velopack.Packaging/ReleaseEntryHelper.cs +++ b/src/Velopack.Packaging/ReleaseEntryHelper.cs @@ -1,4 +1,5 @@ -using Microsoft.Extensions.Logging; +using System.Text; +using Microsoft.Extensions.Logging; using NuGet.Versioning; using Velopack.Json; using Velopack.NuGet; @@ -137,6 +138,21 @@ public class ReleaseEntryHelper return SimpleJson.SerializeObject(feed); } + public static string GetLegacyMigrationReleaseFeedString(VelopackAssetFeed feed) + { + var newestRelease = feed.Assets + .OrderByDescending(f => f.Version) + .Where(f => f.Type == VelopackAssetType.Full) + .FirstOrDefault(); + + var ms = new MemoryStream(); +#pragma warning disable CS0618 // Type or member is obsolete + ReleaseEntry.WriteReleaseFile([ReleaseEntry.FromVelopackAsset(newestRelease)], ms); +#pragma warning restore CS0618 // Type or member is obsolete + + return Encoding.UTF8.GetString(ms.ToArray()); + } + public static string GetSuggestedReleaseName(string id, string version, string channel, bool delta) { var suffix = GetUniqueAssetSuffix(channel);