Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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());
        }
Exemplo n.º 3
0
        public static string FindSuitableQtRuntime(RuntimeSearchLocation runtimeSearchLocation = RuntimeSearchLocation.All)
        {
            var potentials = GetPotentialRuntimesDirectories(runtimeSearchLocation);

            return(FindQtRuntime(potentials, QmlNetConfig.QtBuildVersion, GetCurrentRuntimeTarget()));
        }