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