private static void AddToArchive(Package zip, string fileToAdd, string root)
{
try
{
string uriFileName = fileToAdd.Replace(" ", "_");
FileAttributes attr = System.IO.File.GetAttributes(fileToAdd);
if ((attr & FileAttributes.Directory) == FileAttributes.Directory)
{
root = root + "/" + Path.GetFileName(uriFileName);
string[] subfolders = Directory.GetDirectories(fileToAdd);
for (int i = 0; i < subfolders.Length; i++)
{
AddToArchive(zip, subfolders[i], root);
}
string[] subfiles = Directory.GetFiles(fileToAdd);
for (int i = 0; i < subfiles.Length; i++)
{
AddToArchive(zip, subfiles[i], root);
}
}
else
{
string zipUri = string.Concat(root + "/", Path.GetFileName(uriFileName));
Uri partUri = new Uri(zipUri, UriKind.Relative);
string contentType = System.Net.Mime.MediaTypeNames.Application.Zip;
if (zip.PartExists(partUri)) zip.DeletePart(partUri);
PackagePart pkgPart = zip.CreatePart(partUri, contentType, CompressionOption.Normal);
Byte[] bytes = System.IO.File.ReadAllBytes(fileToAdd);
pkgPart.GetStream().Write(bytes, 0, bytes.Length);
}
}
catch (Exception ex)
{
TextWindow.WriteLine(fileToAdd);
Utilities.OnError(Utilities.GetCurrentMethod(), ex);
}
}