diff --git a/src/MigrationTools.Host/MigrationTools.Host.csproj b/src/MigrationTools.Host/MigrationTools.Host.csproj
index f4d5ccb27..699537bf4 100644
--- a/src/MigrationTools.Host/MigrationTools.Host.csproj
+++ b/src/MigrationTools.Host/MigrationTools.Host.csproj
@@ -24,6 +24,7 @@
+
diff --git a/src/MigrationTools.Host/Services/DetectVersionService.cs b/src/MigrationTools.Host/Services/DetectVersionService.cs
index b4289a5a7..b8dc3af12 100644
--- a/src/MigrationTools.Host/Services/DetectVersionService.cs
+++ b/src/MigrationTools.Host/Services/DetectVersionService.cs
@@ -10,6 +10,7 @@
using NuGet.Protocol.Core.Types;
using NuGet.Versioning;
using Serilog;
+using WGetNET;
namespace MigrationTools.Host.Services
{
@@ -17,9 +18,13 @@ public class DetectVersionService : IDetectVersionService
{
private readonly ITelemetryLogger _Telemetry;
+ public string PackageId { get; set; }
+
+
public DetectVersionService(ITelemetryLogger telemetry)
{
_Telemetry = telemetry;
+ PackageId = "nkdAgility.AzureDevOpsMigrationTools";
}
public Version GetLatestVersion()
@@ -28,40 +33,28 @@ public Version GetLatestVersion()
Stopwatch mainTimer = Stopwatch.StartNew();
//////////////////////////////////
Version latestPackageVersion = null;
- string packageID = "vsts-sync-migrator";
bool sucess = false;
try
{
- //Connect to the official package repository
- IEnumerable versions = GetChocoVersions(packageID);
- latestPackageVersion = versions.Max(p => p.Version);
+ WinGetPackageManager packageManager = new WinGetPackageManager();
+ var package = packageManager.SearchPackage(PackageId).SingleOrDefault();
+
+ latestPackageVersion = new Version(package.AvailableVersion);
if (latestPackageVersion != null)
{
sucess = true;
}
- _Telemetry.TrackDependency(new DependencyTelemetry("PackageRepository", "chocolatey.org", "vsts-sync-migrator", latestPackageVersion == null ? "nullVersion" : latestPackageVersion.ToString(), startTime, mainTimer.Elapsed, "200", sucess));
+ _Telemetry.TrackDependency(new DependencyTelemetry("PackageRepository", "winget", PackageId, latestPackageVersion == null ? "nullVersion" : latestPackageVersion.ToString(), startTime, mainTimer.Elapsed, "200", sucess));
}
catch (Exception ex)
{
Log.Error(ex, "DetectVersionService");
sucess = false;
- _Telemetry.TrackDependency(new DependencyTelemetry("PackageRepository", "chocolatey.org", "vsts-sync-migrator", latestPackageVersion == null ? "nullVersion" : latestPackageVersion.ToString(), startTime, mainTimer.Elapsed, "500", sucess));
+ _Telemetry.TrackDependency(new DependencyTelemetry("PackageRepository", "winget", PackageId, latestPackageVersion == null ? "nullVersion" : latestPackageVersion.ToString(), startTime, mainTimer.Elapsed, "500", sucess));
}
/////////////////
mainTimer.Stop();
return latestPackageVersion;
}
-
- private IEnumerable GetChocoVersions(string packageId, string sourceUrl = "https://chocolatey.org/api/v2/")
- {
- NuGet.Common.ILogger logger = NullLogger.Instance;
- CancellationToken cancellationToken = CancellationToken.None;
- SourceCacheContext cache = new SourceCacheContext();
- PackageSource ps = new PackageSource(sourceUrl);
- var sourceRepository = Repository.Factory.GetCoreV2(ps);
- FindPackageByIdResource resource = sourceRepository.GetResourceAsync().GetAwaiter().GetResult();
- IEnumerable versions = resource.GetAllVersionsAsync(packageId, cache, logger, cancellationToken).GetAwaiter().GetResult();
- return versions;
- }
}
}
\ No newline at end of file
diff --git a/src/MigrationTools.Host/StartupService.cs b/src/MigrationTools.Host/StartupService.cs
index ee1d4449c..b43a58fd0 100644
--- a/src/MigrationTools.Host/StartupService.cs
+++ b/src/MigrationTools.Host/StartupService.cs
@@ -44,17 +44,21 @@ public void RunStartupLogic(string[] args)
_logger.LogInformation($"Latest version detected as {{{nameof(latestVersion)}}}", latestVersion);
var version = Assembly.GetEntryAssembly().GetName().Version;
- if (latestVersion > version && args.Contains("skipVersionCheck"))
+ if (latestVersion > version)
{
_logger.LogWarning("You are currently running version {Version} and a newer version ({LatestVersion}) is available. You should update now using Winget command 'winget nkdAgility.AzureDevOpsMigrationTools' from the Windows Terminal.", version, latestVersion);
+ if (!args.Contains("skipVersionCheck"))
+ {
#if !DEBUG
Console.WriteLine("Do you want to continue? (y/n)");
if (Console.ReadKey().Key != ConsoleKey.Y)
{
- _logger.LogWarning("User aborted to update version");
+ _logger.LogWarning("User aborted to update version");
throw new Exception("User Abort");
+
}
#endif
+ }
}
}
}