Ejemplo n.º 1
0
        private bool TryToDownloadOrUpdateVersionsFile()
        {
            string url;

            if (File.Exists("config\\versions.json") && (DateTime.Now - config.LastUpdateChecked).TotalDays < 1)
            {
                return(true);
            }

            try
            {
                url = FindResource("VersionsFileUrl").ToString();

                if (config.UseProxy)
                {
                    DownloadManagerService.DownloadFileSyncWithProxy(url, "config\\versions.json", config.ProxyUrl, config.ProxyPort);
                }
                else
                {
                    DownloadManagerService.DownloadFileSync(url, "config\\versions.json");
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex);
                CommonUtilsService.PopupExceptionMessage("Error while downloading versions", ex);
            }

            config.LastUpdateChecked = DateTime.Now;

            return(true);
        }
        private void DownloadAndExtractVersion(GodotVersion selectedVersion)
        {
            string fileName;

            try
            {
                fileName = config.UseProxy ? DownloadManagerService.DownloadFileSyncWithProxy(selectedVersion.VersionUrl, "temp", config.ProxyUrl, config.ProxyPort, true) :
                           DownloadManagerService.DownloadFileSync(selectedVersion.VersionUrl, "temp", true);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            var extractedFiles = ZipService.UnzipFile(fileName, $"{config.GodotInstallLocation}\\{selectedVersion.VersionName}");

            File.Delete(fileName);

            foreach (var file in extractedFiles)
            {
                versionService.InstalledVersions.Add(new GodotVersionInstalled
                {
                    VersionId   = selectedVersion.VersionId,
                    VersionName = selectedVersion.VersionName,
                    BitNum      = selectedVersion.BitNum,
                    IsMono      = selectedVersion.IsMono,
                    IsStable    = selectedVersion.IsStable,
                    InstallPath = file.Replace(@"/", @"\\"),
                });
            }

            JsonConverterService <List <GodotVersionInstalled> > .Serialize(versionService.InstalledVersions, $"{config.GodotInstallLocation}\\manifest.json");

            Dispatcher.Invoke(new Action(() => BuildVersionsTree()));

            Dispatcher.Invoke(new Action(() => CommonUtilsService.PopupInfoMessage("Info", "Godot version installed successfully!")));
        }