public void Update(CancellationToken cancellationToken) { Assert.MethodCalledOnlyOnce(ref _updateHasBeenCalled, "Update"); DebugLogger.Log("Updating with content strategy."); var commandFactory = new Commands.AppUpdaterCommandFactory(); var geolocateCommand = commandFactory.CreateGeolocateCommand(); geolocateCommand.Prepare(_context.StatusMonitor); geolocateCommand.Execute(cancellationToken); var latestVersionId = _context.App.GetLatestVersionId(); DebugLogger.LogVariable(latestVersionId, "latestVersionId"); var checkDiskSpaceCommand = commandFactory.CreateCheckDiskSpaceCommandForContent(latestVersionId, _context); checkDiskSpaceCommand.Prepare(_context.StatusMonitor); checkDiskSpaceCommand.Execute(cancellationToken); var validateLicense = commandFactory.CreateValidateLicenseCommand(_context); validateLicense.Prepare(_context.StatusMonitor); validateLicense.Execute(cancellationToken); var uninstall = commandFactory.CreateUninstallCommand(_context); uninstall.Prepare(_context.StatusMonitor); var downloadContentPackage = commandFactory.CreateDownloadContentPackageCommand(latestVersionId, validateLicense.KeySecret, geolocateCommand.CountryCode, _context); downloadContentPackage.Prepare(_context.StatusMonitor); var installContent = commandFactory.CreateInstallContentCommand(latestVersionId, _context); installContent.Prepare(_context.StatusMonitor); uninstall.Execute(cancellationToken); downloadContentPackage.Execute(cancellationToken); installContent.Execute(cancellationToken); _context.App.DownloadDirectory.Clear(); }
public void Update(CancellationToken cancellationToken) { Assert.MethodCalledOnlyOnce(ref _updateHasBeenCalled, "Update"); DebugLogger.Log("Updating with content strategy."); var commandFactory = new Commands.AppUpdaterCommandFactory(); var geolocateCommand = commandFactory.CreateGeolocateCommand(); geolocateCommand.Prepare(_status); geolocateCommand.Execute(cancellationToken); var latestVersionId = _context.App.GetLatestVersionId(); DebugLogger.LogVariable(latestVersionId, "latestVersionId"); var checkDiskSpaceCommand = commandFactory.CreateCheckDiskSpaceCommandForContent(latestVersionId, _context); checkDiskSpaceCommand.Prepare(_status); checkDiskSpaceCommand.Execute(cancellationToken); var validateLicense = commandFactory.CreateValidateLicenseCommand(_context); validateLicense.Prepare(_status); validateLicense.Execute(cancellationToken); var uninstall = commandFactory.CreateUninstallCommand(_context); uninstall.Prepare(_status); var resource = _context.App.RemoteData.GetContentPackageResource(latestVersionId, validateLicense.KeySecret, geolocateCommand.CountryCode); var downloadContentPackage = commandFactory.CreateDownloadContentPackageCommand(latestVersionId, validateLicense.KeySecret, geolocateCommand.CountryCode, _context); downloadContentPackage.Prepare(_status); var installContent = commandFactory.CreateInstallContentCommand(latestVersionId, _context); installContent.Prepare(_status); uninstall.Execute(cancellationToken); var downloadStopwatch = new Stopwatch(); var optionalParams = new PatcherStatistics.OptionalParams { VersionId = latestVersionId, Size = resource.Size, }; Func <PatcherStatistics.OptionalParams> timedParams = () => new PatcherStatistics.OptionalParams { VersionId = optionalParams.VersionId, Size = optionalParams.Size, Time = downloadStopwatch.Elapsed.Seconds, }; try { PatcherStatistics.DispatchSendEvent(PatcherStatistics.Event.ContentDownloadStarted, optionalParams); downloadStopwatch.Start(); downloadContentPackage.Execute(cancellationToken); PatcherStatistics.DispatchSendEvent(PatcherStatistics.Event.ContentDownloadSucceeded, timedParams()); } catch (OperationCanceledException) { PatcherStatistics.DispatchSendEvent(PatcherStatistics.Event.ContentDownloadCanceled, timedParams()); throw; } catch (Exception) { PatcherStatistics.DispatchSendEvent(PatcherStatistics.Event.ContentDownloadFailed, timedParams()); throw; } installContent.Execute(cancellationToken); _context.App.DownloadDirectory.Clear(); }