private async Task DownloadVersion(BLVersion v, VersionDownloader downloader, string dlPath, CancellationTokenSource cancelSource)
 {
     try
     {
         ViewModels.LauncherModel.Default.CurrentState = ViewModels.LauncherModel.StateChange.isInitializing;
         await downloader.Download(v.DisplayName, v.UUID, 1, dlPath, (current, total) =>
         {
             if (ViewModels.LauncherModel.Default.CurrentState == ViewModels.LauncherModel.StateChange.isInitializing)
             {
                 ViewModels.LauncherModel.Default.CurrentState = ViewModels.LauncherModel.StateChange.isDownloading;
                 System.Diagnostics.Debug.WriteLine("Actual download started");
                 if (total.HasValue) ViewModels.LauncherModel.Default.TotalProgress = total.Value;
             }
             ViewModels.LauncherModel.Default.CurrentProgress = current;
         }, cancelSource.Token);
         System.Diagnostics.Debug.WriteLine("Download complete");
         ViewModels.LauncherModel.Default.CurrentState = ViewModels.LauncherModel.StateChange.None;
     }
     catch (TaskCanceledException e)
     {
         ViewModels.LauncherModel.Default.CurrentState = ViewModels.LauncherModel.StateChange.None;
         throw e;
     }
     catch (Exception e)
     {
         ViewModels.LauncherModel.Default.CurrentState = ViewModels.LauncherModel.StateChange.None;
         System.Diagnostics.Debug.WriteLine("Download failed:\n" + e.ToString());
         ErrorScreenShow.errormsg("Error_AppDownloadFailed_Title", "Error_AppDownloadFailed", e);
         throw e;
     }
 }
        private async Task<bool> Download(BLVersion v, bool RunAfterwards)
        {
            System.Diagnostics.Debug.WriteLine("Download start");
            bool wasCanceled = false;

            cancelSource = new CancellationTokenSource();
            ViewModels.LauncherModel.Default.ShowProgressBar = true;
            ViewModels.LauncherModel.Default.AllowCancel = true;
            ViewModels.LauncherModel.Default.CancelCommand = new RelayCommand((o) => Cancel());

            try
            {
                string dlPath = "Minecraft-" + v.Name + ".Appx";
                VersionDownloader downloader = LauncherModel.Default.VersionDownloader;
                if (v.IsBeta) await BetaAuthenticate();
                await DownloadVersion(v, downloader, dlPath, cancelSource);
                await ExtractPackage(v, dlPath, cancelSource);
            }
            catch (TaskCanceledException)
            {
                wasCanceled = true;
            }
            catch (Exception ex)
            {
                ErrorScreenShow.exceptionmsg(ex);
                wasCanceled = true;
            }

            if (!RunAfterwards || wasCanceled) ViewModels.LauncherModel.Default.ShowProgressBar = false;
            ViewModels.LauncherModel.Default.CurrentState = ViewModels.LauncherModel.StateChange.None;
            ViewModels.LauncherModel.Default.AllowCancel = false;
            ViewModels.LauncherModel.Default.CancelCommand = null;
            cancelSource = null;
            v.UpdateInstallStatus();

            return wasCanceled;


        }
Exemplo n.º 3
0
 public ChannelController()
 {
     _versionDownloader = new VersionDownloader();
 }