private async Task CopyPackageContent(InstallablePackage entry, InstallSettings settings)
{
string cachePath = Environment.ExpandEnvironmentVariables(Defaults.CachePath);
string versionDir = Path.Combine(cachePath, Provider.Name, entry.Name, entry.Version);
await entry.DownloadFiles(versionDir);
await Task.Run(() =>
{
try
{
foreach (string file in entry.Files)
{
string cleanFile = file.Replace("/", "\\");
string src = Path.Combine(versionDir, cleanFile);
string dest = Path.Combine(settings.InstallDirectory, cleanFile);
string dir = Path.GetDirectoryName(dest);
Directory.CreateDirectory(dir);
OnCopying(src, dest);
File.Copy(src, dest, true);
OnCopied(src, dest);
}
}
catch (Exception)
{
try
{
Directory.Delete(versionDir, true);
}
catch
{
}
}
});
}