/// <summary> /// 更新文件 /// </summary> /// <param name="fileName"></param> /// <param name="type"></param> /// <param name="upgradePath"></param> /// <param name="resume">是否断点续传</param> /// <returns></returns> public static int UpgradeFile(string fileName, UpgradeFileType type, string upgradePath, bool resume) { //检查目录是否存在及权限 DirectoryInfo dir = new DirectoryInfo(EnvUtil.GetBaseDirectory() + upgradePath); if (!dir.Exists) { Directory.CreateDirectory(dir.FullName).Create(); } else { //设置权限 if ((dir.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly) { dir.Attributes = dir.Attributes & ~FileAttributes.ReadOnly; } } //断点续传 byte[] bytes = DownloadFile(fileName, null); if (bytes == null) { return(-1); } //压缩文件 if (type == UpgradeFileType.Zip) { //IArchive archive = ArchiveFactory.Open(file.FullName); MemoryStream ms = new MemoryStream(bytes); IArchive archive = ArchiveFactory.Open(ms); foreach (IArchiveEntry entry in archive.Entries) { if (!entry.IsDirectory) { try { entry.WriteToDirectory(dir.FullName, ExtractOptions.ExtractFullPath | ExtractOptions.Overwrite); } catch (Exception exc) { Console.WriteLine("[ Upgrade][ Err]:" + exc.Message); } } } archive.Dispose(); ms.Dispose(); } else { string dirName = dir.FullName; if (type == UpgradeFileType.Lib) { // fileName = fileName + ".lib"; dirName = Cms.PhysicPath; } //检查文件是否存在和权限 FileInfo file = new FileInfo(String.Format("{0}{1}", dirName, fileName)); if (file.Exists) { if ((file.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly) { file.Attributes = file.Attributes & ~FileAttributes.ReadOnly; } } else { file.Create().Dispose(); } //输出到文件 FileStream fs = file.OpenWrite(); fs.Write(bytes, 0, bytes.Length); fs.Flush(); fs.Dispose(); } return(1); }
/// <summary> /// 更新文件 /// </summary> /// <param name="fileName"></param> /// <param name="type"></param> /// <param name="upgradePath"></param> /// <param name="resume">是否断点续传</param> /// <returns></returns> public static int UpgradeFile(string fileName, UpgradeFileType type, string upgradePath, bool resume) { //检查目录是否存在及权限 DirectoryInfo dir = new DirectoryInfo(String.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, upgradePath)); if (!dir.Exists) { Directory.CreateDirectory(dir.FullName).Create(); } else { //设置权限 if ((dir.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly) { dir.Attributes = dir.Attributes & ~FileAttributes.ReadOnly; } } //断点续传 byte[] bytes = DownloadFile(fileName, null); if (bytes == null) { return -1; } //压缩文件 if (type == UpgradeFileType.Zip) { //IArchive archive = ArchiveFactory.Open(file.FullName); MemoryStream ms = new MemoryStream(bytes); IArchive archive = ArchiveFactory.Open(ms); foreach (IArchiveEntry entry in archive.Entries) { if (!entry.IsDirectory) { entry.WriteToDirectory(dir.FullName, ExtractOptions.ExtractFullPath | ExtractOptions.Overwrite); } } archive.Dispose(); ms.Dispose(); } else { string dirName = dir.FullName; if (type == UpgradeFileType.Lib) { // fileName = fileName + ".lib"; dirName = Cms.PyhicPath; } //检查文件是否存在和权限 FileInfo file = new FileInfo(String.Format("{0}{1}", dirName, fileName)); if (file.Exists) { if ((file.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly) { file.Attributes = file.Attributes & ~FileAttributes.ReadOnly; } } else { file.Create().Dispose(); } //输出到文件 FileStream fs = file.OpenWrite(); // fs.Write(ms.GetBuffer(), 0, (int)ms.Length); fs.Write(bytes, 0, bytes.Length); fs.Flush(); fs.Dispose(); } return 1; }