public string CreateZipFromSettings(string json) { string result; try { System.Collections.Generic.IEnumerable <System.IO.DirectoryInfo> availableBrands = from path in ResourceManager.AvailableBrands(json) select new System.IO.DirectoryInfo(System.IO.Path.Combine(ResourceManager.Root, path)); System.IO.DirectoryInfo tempFolder = this.ClearTempFolder(); System.IO.DirectoryInfo subdirectory = tempFolder.CreateSubdirectory(System.Guid.NewGuid().ToString()); foreach (System.IO.DirectoryInfo brand in availableBrands) { SettingsZipper.DirectoryCopy(brand.FullName, System.IO.Path.Combine(subdirectory.FullName, brand.Name), true); } string archiveFileName = System.IO.Path.Combine(tempFolder.FullName, string.Format("{0}.zip", subdirectory.Name)); ZipFile.CreateFromDirectory(subdirectory.FullName, archiveFileName); result = archiveFileName; } catch (System.Exception ex) { Debug.WriteLine(ex.Message + " || " + ex.StackTrace); result = null; } return(result); }
public static void DirectoryCopy(string sourceDirName, string destDirName, bool copySubDirs) { System.IO.DirectoryInfo sourceDirectory = new System.IO.DirectoryInfo(sourceDirName); if (!sourceDirectory.Exists) { throw new System.IO.DirectoryNotFoundException("Source directory does not exist or could not be found: '{0}'."); } if (!System.IO.Directory.Exists(destDirName)) { System.IO.Directory.CreateDirectory(destDirName); } System.IO.FileInfo[] files = sourceDirectory.GetFiles(); for (int i = 0; i < files.Length; i++) { System.IO.FileInfo file = files[i]; string temppath = System.IO.Path.Combine(destDirName, file.Name); file.CopyTo(temppath, true); } if (copySubDirs) { System.IO.DirectoryInfo[] directories = sourceDirectory.GetDirectories(); for (int i = 0; i < directories.Length; i++) { System.IO.DirectoryInfo subdir = directories[i]; string temppath = System.IO.Path.Combine(destDirName, subdir.Name); SettingsZipper.DirectoryCopy(subdir.FullName, temppath, true); } } }