internal void DownloadAndInstall(PackageDownloadHandle packageDownloadHandle)
{
var pkgDownload = new PackageDownload(packageDownloadHandle.Header._id, packageDownloadHandle.VersionName);
Downloads.Add(packageDownloadHandle);
ThreadStart start = () =>
{
try
{
var response = Client.Execute(pkgDownload);
var pathDl = PackageDownload.GetFileFromResponse(response);
dynSettings.Controller.UIDispatcher.BeginInvoke((Action)(() =>
{
try
{
packageDownloadHandle.Done(pathDl);
Package dynPkg;
var firstOrDefault = dynSettings.PackageLoader.LocalPackages.FirstOrDefault(pkg => pkg.Name == packageDownloadHandle.Name);
if (firstOrDefault != null)
{
firstOrDefault.UninstallCommand.Execute();
}
if (packageDownloadHandle.Extract(out dynPkg))
{
var downloadPkg = Package.FromDirectory(dynPkg.RootDirectory);
downloadPkg.Load();
dynSettings.PackageLoader.LocalPackages.Add(downloadPkg);
packageDownloadHandle.DownloadState = PackageDownloadHandle.State.Installed;
}
}
catch (Exception e)
{
packageDownloadHandle.Error(e.Message);
}
}));
}
catch (Exception e)
{
packageDownloadHandle.Error(e.Message);
}
};
new Thread(start).Start();
}