diff --git a/test/LegacyTestApp/BuildVelopack0084.ps1 b/test/LegacyTestApp/BuildVelopack0084.ps1 new file mode 100644 index 00000000..14d0d776 --- /dev/null +++ b/test/LegacyTestApp/BuildVelopack0084.ps1 @@ -0,0 +1,7 @@ + + +dotnet build -c Release -p:UseVelopack=0.0.84 + +dotnet tool install vpk --version 0.0.84 --tool-path bin/vpk + +./bin/vpk/vpk.exe pack -u LegacyTestApp -v 1.0.0 -p bin/Release/net48 \ No newline at end of file diff --git a/test/LegacyTestApp/LegacyTestApp.csproj b/test/LegacyTestApp/LegacyTestApp.csproj index 00263153..ad7c1cad 100644 --- a/test/LegacyTestApp/LegacyTestApp.csproj +++ b/test/LegacyTestApp/LegacyTestApp.csproj @@ -6,18 +6,23 @@ latest + - + Exe - CLOWD + CLOWD + VELOPACK - + + + + diff --git a/test/LegacyTestApp/Program.cs b/test/LegacyTestApp/Program.cs index 008bc07c..e13f679c 100644 --- a/test/LegacyTestApp/Program.cs +++ b/test/LegacyTestApp/Program.cs @@ -2,7 +2,11 @@ using System.Diagnostics; using System.IO; using System.Reflection; +#if VELOPACK +using Velopack; +#else using Squirrel; +#endif [assembly: AssemblyMetadata("SquirrelAwareVersion", "1")] @@ -19,6 +23,13 @@ namespace LegacyTestApp onAppUninstall: (v, t) => debugFile("args.txt", String.Join(" ", args)), onEveryRun: (v, t, f) => debugFile("args.txt", String.Join(" ", args)) ); +#elif VELOPACK + VelopackApp.Build() + .WithAfterInstallFastCallback(v => debugFile("args.txt", String.Join(" ", args))) + .WithBeforeUpdateFastCallback(v => debugFile("args.txt", String.Join(" ", args))) + .WithBeforeUninstallFastCallback(v => debugFile("args.txt", String.Join(" ", args))) + .WithAfterUpdateFastCallback(v => debugFile("args.txt", String.Join(" ", args))) + .Run(); #else SquirrelAwareApp.HandleEvents( onInitialInstall: v => debugFile("args.txt", String.Join(" ", args)), @@ -29,17 +40,34 @@ namespace LegacyTestApp #endif try { - +#if !VELOPACK SquirrelLogger.Register(); +#endif if (args.Length == 1 && args[0] == "version") { +#if VELOPACK + var um = new UpdateManager("n/a", logger: new SquirrelLogger()); + Console.WriteLine(um.CurrentVersion?.ToString() ?? "unknown_version"); +#else using var um = new UpdateManager(""); Console.WriteLine(um.CurrentlyInstalledVersion()?.ToString() ?? "unknown_version"); +#endif return 0; } if (args.Length == 2) { if (args[0] == "check") { +#if VELOPACK + var um = new UpdateManager(args[1]); + var info = um.CheckForUpdates(); + if (info == null || info.TargetFullRelease == null) { + Console.WriteLine("no updates"); + return 0; + } else { + Console.WriteLine("update: " + info.TargetFullRelease.Version); + return 0; + } +#else using var um = new UpdateManager(args[1]); var info = um.CheckForUpdate().GetAwaiter().GetResult(); if (info == null || info.ReleasesToApply == null || info.FutureReleaseEntry == null || info.ReleasesToApply.Count == 0) { @@ -49,16 +77,30 @@ namespace LegacyTestApp Console.WriteLine("update: " + info.FutureReleaseEntry.Version); return 0; } +#endif } if (args[0] == "download") { +#if VELOPACK + var um = new UpdateManager(args[1]); + var info = um.CheckForUpdates(); + if (info == null) return -1; + um.DownloadUpdates(info); + return 0; +#else using var um = new UpdateManager(args[1]); var entry = um.UpdateApp().GetAwaiter().GetResult(); return entry == null ? -1 : 0; +#endif } if (args[0] == "apply") { +#if VELOPACK + var um = new UpdateManager(args[1]); + um.ApplyUpdatesAndRestart(); +#else UpdateManager.RestartApp(); +#endif return 0; } } diff --git a/test/LegacyTestApp/SquirrelLogger.cs b/test/LegacyTestApp/SquirrelLogger.cs index de8a5df5..966097e7 100644 --- a/test/LegacyTestApp/SquirrelLogger.cs +++ b/test/LegacyTestApp/SquirrelLogger.cs @@ -2,7 +2,27 @@ namespace LegacyTestApp { - internal class SquirrelLogger : Squirrel.SimpleSplat.ILogger +#if VELOPACK + using Microsoft.Extensions.Logging; + class SquirrelLogger : ILogger + { + public IDisposable BeginScope(TState state) where TState : notnull + { + return null; + } + + public bool IsEnabled(LogLevel logLevel) + { + return true; + } + + public void Log(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func formatter) + { + Console.WriteLine(formatter(state, exception)); + } + } +#else + class SquirrelLogger : Squirrel.SimpleSplat.ILogger { protected SquirrelLogger() { @@ -20,4 +40,5 @@ namespace LegacyTestApp Console.WriteLine(message); } } +#endif } diff --git a/test/LegacyTestApp/buildall.bat b/test/LegacyTestApp/buildall.bat index 927a9934..fd919a99 100644 --- a/test/LegacyTestApp/buildall.bat +++ b/test/LegacyTestApp/buildall.bat @@ -17,4 +17,11 @@ rmdir /s /q obj rmdir /s /q releases powershell -executionpolicy bypass ./BuildClowdV3.ps1 -copy /Y releases\LegacyTestAppSetup.exe ..\fixtures\LegacyTestApp-ClowdV3-Setup.exe \ No newline at end of file +copy /Y releases\LegacyTestAppSetup.exe ..\fixtures\LegacyTestApp-ClowdV3-Setup.exe + +rmdir /s /q bin +rmdir /s /q obj +rmdir /s /q releases + +powershell -executionpolicy bypass ./BuildVelopack0084.ps1 +copy /Y releases\LegacyTestApp-win-Setup.exe ..\fixtures\LegacyTestApp-Velopack0084-Setup.exe \ No newline at end of file diff --git a/test/Velopack.Packaging.Tests/WindowsPackTests.cs b/test/Velopack.Packaging.Tests/WindowsPackTests.cs index 99e1ab6f..32bcbfc6 100644 --- a/test/Velopack.Packaging.Tests/WindowsPackTests.cs +++ b/test/Velopack.Packaging.Tests/WindowsPackTests.cs @@ -487,6 +487,7 @@ public class WindowsPackTests [InlineData("LegacyTestApp-ClowdV2-Setup.exe", "app-1.0.0")] [InlineData("LegacyTestApp-ClowdV3-Setup.exe", "current")] [InlineData("LegacyTestApp-SquirrelWinV2-Setup.exe", "app-1.0.0")] + [InlineData("LegacyTestApp-Velopack0084-Setup.exe", "current")] public void LegacyAppCanSuccessfullyMigrate(string fixture, string origDirName) { Skip.IfNot(VelopackRuntimeInfo.IsWindows); @@ -528,6 +529,9 @@ public class WindowsPackTests // this is the file written by TestApp when it's detected the squirrel restart. if this is here, everything went smoothly. Assert.True(File.Exists(Path.Combine(rootDir, "restarted"))); + + var chk3version = RunNoCoverage(appExe, new string[] { "version" }, currentDir, logger); + Assert.EndsWith(Environment.NewLine + "2.0.0", chk3version); } //private string RunCoveredRust(string binName, string[] args, string workingDir, ILogger logger, int? exitCode = 0) diff --git a/test/fixtures/LegacyTestApp-Velopack0084-Setup.exe b/test/fixtures/LegacyTestApp-Velopack0084-Setup.exe new file mode 100644 index 00000000..f1c0f4aa Binary files /dev/null and b/test/fixtures/LegacyTestApp-Velopack0084-Setup.exe differ