private void GetContentDownloadUrl_Completed(GetContentDownloadUrlResult result, RemoteAssetDownloadInfo downloadInfo) { if (result != null) { string urlToDownloadFile = result.URL; ProcessFileDownload(downloadInfo, urlToDownloadFile); } else { downloadInfo.Progress = 0; downloadInfo.HasError = true; downloadInfo.RaiseStatusEvent(); } }
private void OnFileDownloaded(UnityWebRequest www, RemoteAssetDownloadInfo downloadInfo) { if (www.isNetworkError || www.isHttpError) { downloadInfo.Progress = 0; downloadInfo.HasError = true; downloadInfo.RaiseStatusEvent(); Debug.Log(downloadInfo.Asset.File.FileName + " FILE DOWNLOAD ERROR!"); www = null; } else { if (www.isDone) { byte[] results = www.downloadHandler.data; if (File.Exists(downloadInfo.Asset.File.FileName)) { File.Delete(downloadInfo.Asset.File.FileName); } if (!Directory.Exists(Path.GetDirectoryName(downloadInfo.Asset.File.FileName))) { Directory.CreateDirectory(Path.GetDirectoryName(downloadInfo.Asset.File.FileName)); } File.WriteAllBytes(downloadInfo.Asset.File.FileName, results); if (downloadInfo.Asset.Version > 1) { IncrementFileVersion(downloadInfo.Asset.File.LocalRelativeName, downloadInfo.Asset.Version); } downloadInfo.IsCompleted = true; downloadInfo.Progress = 100; if (downloadInfo.Asset.File.FileName.ToLower().EndsWith(".zip")) { //ZipArchive zip = ZipFile.OpenRead(downloadInfo.Asset.File.FileName); FileInfo fileInfo = new FileInfo(downloadInfo.Asset.File.FileName); using (ZipArchive archive = ZipFile.OpenRead(downloadInfo.Asset.File.FileName)) { string currentFileName = Path.GetFileName(downloadInfo.Asset.File.FileName); string folderName = downloadInfo.Asset.File.FileName.Replace(@"\", @"/").Replace(currentFileName, ""); foreach (var entry in archive.Entries) { using (var entryStream = entry.Open()) { string finalFileName = folderName + entry.Name; //try //{ if (File.Exists(finalFileName)) { File.Delete(finalFileName); } if (!File.Exists(finalFileName)) { using (FileStream outputFileStream = new FileStream(finalFileName, FileMode.Create)) { entryStream.CopyTo(outputFileStream); } } //} //catch {} } } } } downloadInfo.RaiseStatusEvent(); downloadInfo.Asset.RequireDownload = false; www = null; totalGameReadySizeDownloaded += downloadInfo.Asset.File.Size; interimGameReadySizeDownloaded = 0; UpdateCurrentProgress(null, downloadInfo); } else { //long totalLenght = Convert.ToInt64((www.downloadProgress * 100f) * www.downloadedBytes); downloadInfo.Progress = Convert.ToInt32(www.downloadProgress * 100); downloadInfo.RaiseStatusEvent(); UpdateCurrentProgress(www, downloadInfo); } Debug.Log(downloadInfo.Asset.File.FileName + " " + downloadInfo.Progress.ToString() + "%"); } }