public static void DiscoverOrDownloadSuitableQtRuntime(RuntimeSearchLocation runtimeSearchLocation = RuntimeSearchLocation.All) { var suitableRuntime = FindSuitableQtRuntime(runtimeSearchLocation); if (!string.IsNullOrEmpty(suitableRuntime)) { // Found one! ConfigureRuntimeDirectory(suitableRuntime); return; } var currentTarget = GetCurrentRuntimeTarget(); var version = $"{QmlNetConfig.QtBuildVersion}-{RuntimeTargetToString(currentTarget)}"; // Let's try to download and install the Qt runtime into the users directory. var destinationDirectory = Path.Combine(GetPotentialRuntimesDirectories(RuntimeSearchLocation.UserDirectory).Single(), version); var destinationTmpDirectory = $"{destinationDirectory}-{Guid.NewGuid().ToString().Replace("-", "")}"; Directory.CreateDirectory(destinationTmpDirectory); DownloadRuntimeToDirectory(QmlNetConfig.QtBuildVersion, currentTarget, destinationTmpDirectory); if (Directory.Exists(destinationDirectory)) { Directory.Delete(destinationDirectory, true); } Directory.Move(destinationTmpDirectory, destinationDirectory); ConfigureRuntimeDirectory(destinationDirectory); }
public static string[] GetPotentialRuntimesDirectories(RuntimeSearchLocation runtimes = RuntimeSearchLocation.All) { var result = new List <string>(); // Order matters, most important location first. if (runtimes.HasFlag(RuntimeSearchLocation.ExecutableDirectory)) { result.Add(Path.Combine(GetRuntimeExecutableDirectory())); } if (runtimes.HasFlag(RuntimeSearchLocation.UserDirectory)) { result.Add(GetRuntimeUserDirectory()); } if (runtimes.HasFlag(RuntimeSearchLocation.CurrentDirectory)) { result.Add(GetRuntimeCurrentDirectory()); } return(result.ToArray()); }
public static string FindSuitableQtRuntime(RuntimeSearchLocation runtimeSearchLocation = RuntimeSearchLocation.All) { var potentials = GetPotentialRuntimesDirectories(runtimeSearchLocation); return(FindQtRuntime(potentials, QmlNetConfig.QtBuildVersion, GetCurrentRuntimeTarget())); }