using System; using System.Collections.Generic; using System.IO.Compression; using System.Linq; using System.Reflection; using System.Text; using System.Threading; using System.Threading.Tasks; using Tango.Core; using Tango.Core.Helpers; using Tango.PPC.Common.UpdatePackages; using Tango.PPC.Shared.Updates; using Tango.Transport.Web; namespace Tango.PPC.Packages.CefInstaller { [PPCPackage(PackageType.Post, "Installing Web Browser", true)] public class CefInstaller : ExtendedObject, IPPCPackage { public Task Run(PackageContext context) { return Task.Factory.StartNew(() => { LogManager.Log("Downloading cef binaries..."); var zipFile = TemporaryManager.CreateImaginaryFile(); try { using (AutoFileDownloader downloader = new AutoFileDownloader("https://tangostorage.blob.core.windows.net/resources/CefSharpOutput.zip", "https://tango.azureedge.net/resources/CefSharpOutput.zip", zipFile)) { downloader.Progress += (x, e) => { context.ReportProgress("Downloading cef binaries...", false, e.Current, e.Total); }; downloader.Download().GetAwaiter().GetResult(); } using (ZipArchive zip = ZipFile.OpenRead(zipFile)) { zip.ExtractToDirectory(context.ApplicationManager.StartPath, true); } } catch (Exception ex) { LogManager.Log(ex, "Error installing cef binaries."); throw; } finally { zipFile.Delete(); } }); } } }