in JetBrains.Profiler.SelfApi/src/Impl/PrerequisiteBase.cs [254:301]
private bool TryGetDownloadedRunner(string downloadPath, string runtimeIdString, out string runnerPath)
{
runnerPath = null;
var runnerName = GetRunnerName();
Trace.Verbose("Prerequisite.TryGetDownloadedRunner: `{0}`", runnerName);
if (string.IsNullOrEmpty(downloadPath))
downloadPath = GetDefaultDownloadPath();
downloadPath = Path.Combine(downloadPath, Name);
Trace.Verbose("Prerequisite.TryGetDownloadedRunner: Looking for latest version at `{0}`...", downloadPath);
if (!Directory.Exists(downloadPath))
{
Trace.Verbose("Prerequisite.TryGetDownloadedRunner: No runner found.");
return false;
}
var packageVersion2 = SemanticVersion.Version2;
string latestOriginal = null; // the latest found version including build meta-info
NuGet.SemanticVersion latest = null; // the latest parsed version w/o meta-info
foreach (var versionFolder in Directory.GetDirectories(downloadPath))
{
var sVer = Path.GetFileName(versionFolder);
Trace.Verbose("Prerequisite.TryGetDownloadedRunner: {0}", sVer);
var ver = NuGet.SemanticVersion.TryParse(sVer);
if (ver == null || ver.Version2 != packageVersion2)
continue;
if (latest == null || latest.CompareTo(ver) <= 0)
{
latestOriginal = sVer;
latest = ver;
}
}
if (latestOriginal != null)
{
runnerPath = Path.Combine(downloadPath, latestOriginal, runtimeIdString, runnerName);
Trace.Verbose("Prerequisite.TryGetDownloadedRunner: Checking `{0}`...", runnerPath);
return File.Exists(runnerPath);
}
Trace.Verbose("Prerequisite.TryGetDownloadedRunner: No runner found.");
return false;
}