private bool TryGetRunnerEx(string prerequisitePath, out string runnerPath) { runnerPath = null; var runnerName = GetRunnerName(); Trace.Verbose("Prerequisite.TryGetRunnerEx: `{0}`", runnerName); if (string.IsNullOrEmpty(prerequisitePath)) { prerequisitePath = GetDefaultDownloadPath(); } prerequisitePath = Path.Combine(prerequisitePath, Name); Trace.Verbose("Prerequisite.TryGetRunnerEx: Looking for latest version at `{0}`...", prerequisitePath); if (!Directory.Exists(prerequisitePath)) { Trace.Verbose("Prerequisite.TryGetRunnerEx: 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(prerequisitePath)) { var sVer = Path.GetFileName(versionFolder); Trace.Verbose("Prerequisite.TryGetRunnerEx: {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(prerequisitePath, latestOriginal, runnerName); Trace.Verbose("Prerequisite.TryGetRunnerEx: Checking `{0}`...", runnerPath); return(File.Exists(runnerPath)); } Trace.Verbose("Prerequisite.TryGetRunnerEx: No runner found."); return(false); }
protected PrerequisiteBase(string name, NuGet.SemanticVersion semanticVersion) { Name = name; SemanticVersion = semanticVersion; }