Creating Zip archives in .NET (without an external library like SharpZipLib) - Jon Galloway

Creating Zip archives in .NET (without an external library like SharpZipLib)

Overview

SharpZipLib provides best free .NET compression library, but what if you can't use it due to the GPL license? I'll look at a few options, ending with my favorite - System.IO.Packaging.

SharpZipLib is good, but there's that GPL thing

SharpZipLib includes good support for zip. I've written about it a few times, and I think it's great. Unfortunately, it's under a wacky "GPL but pretty much LGPL" license - it's GPL, but includes a clause that exempts you from the "viral" effects of the GPL:

Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module.

Bottom line In plain English this means you can use this library in commercial closed-source applications.

I'm pretty sure that the reason for this odd "sort-of-GPL" license is because some of the SharpZipLib is based on some GPL's Java code. However, most companies have policies which forbid or greatly restrict their use of GPL code, and for very good reason: GPL has been set up as an alternative to traditional commercial software licensing, and while it's possible to use GPL code in commercial software, it's something that requires legal department involvement. So, my bottom line is that I can't use your code due to your license.

.NET Zip Library

UPDATE: DotNetZip has been released on CodePlex, and the one issue I ran into has been fixed. I'd recommend giving this a try instead of System.IO.Packaging (as I'd originally recommended), because it's a lot easier to use.

The Zip format allows for several different compression methods, but the most common is Deflate. System.IO.Compression includes a DeflateStream class. You'd think that System.IO would include Zip, but... no. The problem is that, while System.IO.DeflateStream can write to a stream, it doesn't write the file headers required for Zip handlers to read them.

Microsoft Interop blog posted a .NET Zip Library which adds the correct headers to the output of a System.IO.Compression DeflateStream.

ZipFile zip= new ZipFile("MyNewZip.zip");
zip.AddDirectory(
"My Pictures", true); // AddDirectory recurses subdirectories
zip.Save();

Note: DotNetZip has been released to CodePlex, and the issue I reported has been fixed. 

This works, but with some caveats. First of all, adding files causes an identical structure to be created in the zip. For instance, if I use the following:

zip.AddFile("C:\My Documents\Sample\File.txt");

The resulting Zip will contain File.txt, but it will be within the \My Documents\Sample\ hierarchy. There's no way to control the structure of the zip file when you add individual files, unless you want to modify the zip library (which is under MsPL license). That proved to be a big problem in my case, because the zip structure I'm creating is pretty rigid. So, if you're just zipping an entire folder full of files, this library may work for you, but if you need more control you may need to modify the library. I'm guessing if this were published on CodePlex it would have been fixed a while ago.

Another larger problem to keep in mind is that stream based compression is much less efficient than file based compression. File compression can optimize the compression used based on the content of all included files; stream based compression compresses data as it comes in, so it can't take advantage of data it hasn't seen yet.

The J# Zip Library

J# has included zip since day one, to keep compatible with the Java libraries. So, if you're willing to bundle the appropriate Java library (specifically, vjslib.dll), you can use the zip classes in java.util.zip. It works, but it seems like a really goofy hack to distribute a 3.6 MB DLL just to support zip.

System.IO.Packaging includes Zip support

In .NET 3.0, you can use the the System.IO.Packaging  ZipPackage class in WindowsBase.DLL. It's just 1.1 MB, and it just seems to fit a lot better than importing Java libraries. It's not very straightforward, but it does work. The "not straightforward" part comes from the fact that this isn't a generic Zip implementation, it's a packaging library for formats like XPS that happen to use Zip.

First, you'll need to find WindowsBase.dll so you can add a reference to it. If it's not on your .NET references, you'll probably find it in C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\WindowsBase.dll.

It's not as simple as it should be, but it does work. Here's a sample that creates a Zip archive and adds two files:

 

using System;
using System.IO;
using System.IO.Packaging;

namespace ZipSample
{
class Program
{
static void Main(string[] args)
{
AddFileToZip(
"Output.zip", @"C:\Windows\Notepad.exe");
AddFileToZip(
"Output.zip", @"C:\Windows\System32\Calc.exe");
}

private const long BUFFER_SIZE = 4096;

private static void AddFileToZip(string zipFilename, string fileToAdd)
{
using (Package zip = System.IO.Packaging.Package.Open(zipFilename, FileMode.OpenOrCreate))
{
string destFilename = ".\\" + Path.GetFileName(fileToAdd);
Uri uri
= PackUriHelper.CreatePartUri(new Uri(destFilename, UriKind.Relative));
if (zip.PartExists(uri))
{
zip.DeletePart(uri);
}
PackagePart part
= zip.CreatePart(uri, "",CompressionOption.Normal);
using (FileStream fileStream = new FileStream(fileToAdd, FileMode.Open, FileAccess.Read))
{
using (Stream dest = part.GetStream())
{
CopyStream(fileStream, dest);
}
}
}
}

private static void CopyStream(System.IO.FileStream inputStream, System.IO.Stream outputStream)
{
long bufferSize = inputStream.Length < BUFFER_SIZE ? inputStream.Length : BUFFER_SIZE;
byte[] buffer = new byte[bufferSize];
int bytesRead = 0;
long bytesWritten = 0;
while ((bytesRead = inputStream.Read(buffer, 0, buffer.Length)) != 0)
{
outputStream.Write(buffer,
0, bytesRead);
bytesWritten
+= bufferSize;
}
}
}
}

 

Zip

One weird side-effect of using the ZipPackage to create Zips is that Packages contain a content type manifest named "[Content_Types].xml". If you create a ZipPackage, it will automatically include "[Content_Types].xml"., and if you try to read from a ZIP file which doesn't contain a file called "[Content_Types].xml" in the root, it will fail.

You'll notice that the compression in my test is not that great. In fact, pretty bad - Notepad.exe got bigger. Binary files don't compress nearly as well as text-based files - for example, I tested on a 55KB file and it compressed to less than 1KB - but the compression in this library doesn't appear to be fully implemented yet. For example, the CompressionOption enum includes CompressionOption.Maximum, but that setting is ignored. Normal is the best you'll get right now.

Another possible reason for low compression ratios in this sample is that I'm adding files separately rather than adding several files at a time. As I mentioned earlier, Zip compression works better when it has access to the entire file or group of files when creating the archive.

You can use the packaging library for your own file format. For example, here's an example that stores object state using XmlWriters to write to a Zip stream.

But where's System.IO.Zip?

That's a good question. All the Zip handling in System.IO.Packaging is in an internal class MS.Internal.IO.Zip. It would have been a lot more useful to implement a public System.IO.Zip which was used by System.IO.Packaging so that we could directly create and access Zip files without pretending we were creating XPS packages with manifests and Uri's.

Published Thursday, October 25, 2007 1:07 AM by Jon Galloway

Comments

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

Jon, if you think a CodePlex project would be in order for the Zip library, I am happy to launch it.  

Let me know.

Thursday, October 25, 2007 11:12 AM by Dino

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

I cannot believe it has taken until .net 3.0 for this to have been added.  You have to wonder that if you end up having to write wrappers around this just to make using the objects easier that people will just stick with SharpZipLib "'cause it works"

Thursday, October 25, 2007 12:04 PM by Dave

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

If I'm not mistaken the initial (.NET 1.1 and .NET 2.0) available compression libraries from System.IO.Compression is not based on the Zip algorithm, but rather, on the GZip standard. Hence the problems with compatibility in deflation.

Friday, October 26, 2007 1:09 AM by Jon Limjap

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

@Anonymous "Good luck" ranter -

I've posted a few times about SharpZipLib, including some working code samples. I've also put in a lot of work in support of Mono, by co-founding the Monoppix Linux Live CD project.

Yes, there are good external libraries (GPL, products like Xceed, etc.), and we're both happy to use them when appropriate.

If your goal is to compress data for code you're not going to distribute, the title of the post should tell you that you've come to the wrong place. This post is about creating zip archives without external libraries.

There are times when you want to distribute your application without someone else dictating your license, and that doesn't just include selling them. I'm sure that you've encountered this when you were selecting your license in your projects on CodePlex, SourceForge, Google Code, etc., right?

Your FUD comment is silly rhetoric - it's a fact that SharpZipLib is under GPL, and I was speculating on why that might be. I can't conceive of how that speculation could cause frear, uncertainty, or doubt - the fact is that it's under GPL.

Saturday, October 27, 2007 1:01 PM by Jon Galloway

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

@Jon Limjap:

Some clarifications (my ex-coworkers at Xceed know I hate when people mix compression algorithm and archive format):

- DEFLATE is a compression algorithm, which transforms data X to data Y without adding any headers or footers (other than checksums and markers to help decompress)

- GZip is an archive format, made of a header, compressed data and a footer. The header contains a field that tells what compression algorithm was used. It happens that it's ALWAYS deflate.

- Zip is another (better) archive format, also made of headers, compressed data, footers et al. The header also contains a field that tell what is the compression method. It happens that Deflate is the most popular and supported, though better compression algorithms exist.

- .NET 1.1 did not have compression

- .NET 2.0 has the DeflateStream, which compresses data using the Deflate algorithm, but does not add a header or footer.

- .NET 2.0 also has the GZipStream, which uses the DeflateStream underneath, and also creates a header and footer.

So it's not a question of compatibility of a GZip compression versus Zip compression. These FORMATS both use the SAME deflate compression, but different header/footer formats. In short, if .NET 2.0 did not have a ZipStream or equivalent, the ONLY reason is that it wasn't a priority for MS (or they think Xceed Zip is too awesome q;-) )

Saturday, October 27, 2007 2:24 PM by Martin Plante

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

Great post! I was writing the same post last week but yours is way better! Thanks for doing the homework.

Sunday, October 28, 2007 3:45 AM by Scott Hanselman

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

What about if you use the .Net framework 2

Thursday, December 20, 2007 5:48 AM by Werner

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

I tried using DotNetZip but unfortunately it just doesn't currently have enough options. For example, it doesn't support password-protecting the file and also doesn't stream the compressed contents to disk until it is done. In my case, I'm trying to programmatically compress and encrypt  multi-gigabyte database backups but DotNetZip's limitations currently don't work for me.

I do hope though that the creators of DotNetZip continue to develop it because all the other options are just not ideal.

Friday, January 25, 2008 8:40 PM by Ken McNamee

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

How can one unzip programmatically with the "WindowsBase.dll" file?

Monday, January 28, 2008 3:50 PM by Mark Kamoski

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

The zip is OK and works. Nice. However, if one unzips the created zip file (using >Windows XP Pro, >Windows Explorer, >Right click, >Extract All), then one will note that it puts all the files into 1 output directory. That is, the folder stucture is not preserved in any way. Is there a way to preserve the folder structure?

Monday, January 28, 2008 4:46 PM by Mark Kamoski

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

I really do not understand your point of view on the GPL modified license "problem" with SharpZipLib... What is the issue when distributing commercial products that use SharZipLib considering this license terms exception ???

Moreover, what is the difference between your library and SharpZilLib... I mean : what do you mean with "without an external library" ? Your code is distributed as source archive or assembly, just as SharpZipLib, did I miss something ?

I think a new shared library is always good news but your article seems a little odds to me...

Friday, September 12, 2008 7:45 AM by Alex

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

thanks for your time in researching this article. i have been looking for a solution.

I agree about the code sample you show. i think the code complexity of most actions in  dotnet is fine for the guy writing it, but when a stranger somes back to maintain it, the problems arise. time is money.

Friday, May 1, 2009 11:03 AM by dave

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

GREAT!!!!! Thanks :)

Thursday, May 14, 2009 5:28 AM by larav

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

Create a directory inside the ZIP using your method.

private static void AddFileToZip(string zipFilename, string fileToAdd, string Directory)        {            using (Package zip = System.IO.Packaging.Package.Open(zipFilename, FileMode.OpenOrCreate))            {                string destFilename = ".\\" + sDirectory + "\\" + Path.GetFileName(fileToAdd);                Uri uri = PackUriHelper.CreatePartUri(new Uri(destFilename, UriKind.Relative));                if (zip.PartExists(uri))                {                    zip.DeletePart(uri);                }                PackagePart part = zip.CreatePart(uri, "",CompressionOption.Normal);                using (FileStream fileStream = new FileStream(fileToAdd, FileMode.Open, FileAccess.Read))                {                    using (Stream dest = part.GetStream())                    {                        CopyStream(fileStream, dest);                    }                }            }        }

Friday, May 15, 2009 1:16 PM by Al Pascual

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

Hi all,

I have just released a new version of ZipStorer with Deflate support at: zipstorer.codeplex.com

Thursday, July 30, 2009 11:01 PM by Jaime Olivares

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

dsfgsdfg dfssdfgf fdsgsdfgsd

Saturday, August 1, 2009 3:09 PM by sabsSleette

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

Hello! I'am have some trouble. I want create ZIP package with RUSSIAN files, and before creating archive i have bad-russian. How insert russian string in ZIP?

Friday, August 14, 2009 9:27 AM by shwed

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

Very easy.  Thank you.

Monday, August 24, 2009 8:01 PM by Nathan

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

I am very appriciate you. But the problem is, how can we avoid for generating [content-type].xml file. My client is not required this file. Please let me know to fix this.

Friday, March 12, 2010 5:38 AM by Chitti Chaitanya

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

Hello!, as you mentioned, the library automatically adds a xml file ([Content_Types].xml) and if you read the zip file without that file, it does't work. But if I don't want that xml file in my zip, is there any way to remove it?

Tuesday, June 8, 2010 2:20 PM by Carlos

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

jon, great post... how did you solve the folder structure when adding files in a zip file using DotNetZip lib?

thanks!

Wednesday, August 4, 2010 10:15 PM by Rex

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

How to Unzip the file

Wednesday, March 2, 2011 1:55 AM by Fardin

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

I have used System.IO.Packaging - ZipPackage class in WindowsBase.DLL, but for some of the download its giving the error Cannot access the closed Stream. When i check the zip file few files are added to the zip and not all.

Tuesday, April 5, 2011 1:44 AM by Hiren

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

I just wasted a day trying to use this approach to read and write zip files. The author fails to mention some of the major gotchas you'll likely encounter using these poorly designed .NET classes.

First, the file names in the archive will be URL encoded! "My Stuff.txt" will be saved in the archive as "My%20Stuff.txt".

Next, the Package.Open(stream,...) methods are ridiculously restrictive on what type of FileStream they'll accept. I wasted hours before learning that it will NOT accept a FileStream that was created via File.Open, no matter what FileMode, FileAccess options I used when opening it. Create a FileStream using "new" instead.

Finally, the deal breaker: reading a zip file! The author provided no example of this. Calling Package.Open() on existing file succeeds, but calling GetParts() simply returns an empty array. Microsoft's example of reading a package relies on package relationships being established. I'm not sure its even possible to create the file created in the example above using the ZipPackage class.

Tuesday, April 5, 2011 3:07 PM by Bruce

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

I want to convert folder to zip with dll in c#.net

Friday, November 4, 2011 5:31 AM by sandeep

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

Lol! I really like this!

Friday, January 20, 2012 10:30 AM by Oscillmiche

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

For Descomprime Zip

with code this:

       private static void ExtractFileToZip(string zipFilename)

       {

           using (System.IO.Packaging.Package zip = System.IO.Packaging.Package.Open(zipFilename, System.IO.FileMode.Open))

           {  

               System.IO.Packaging.PackagePartCollection  parts = zip.GetParts();

               foreach (System.IO.Packaging.PackagePart part in parts)

               {

                   String Archivo=part.Uri.ToString ().Replace(@"/",@"\");

                   String StrRutaArchivo = Environment.CurrentDirectory + Archivo;

                  using (System.IO.FileStream fileStream = new System.IO.FileStream(StrRutaArchivo, System.IO.FileMode.CreateNew,System.IO.FileAccess.ReadWrite))

                   {

                       using (System.IO.Stream Origen = part.GetStream())

                       {

                           long bufferSize = Origen.Length < BUFFER_SIZE ? Origen.Length : BUFFER_SIZE;

                           byte[] buffer = new byte[bufferSize];

                           int bytesRead = 0; long bytesWritten = 0;

                           while ((bytesRead = Origen.Read(buffer, 0, buffer.Length)) != 0)

                           {

                               fileStream.Write(buffer, 0, bytesRead);

                               bytesWritten += bufferSize;

                           }

                       }  

                   }  

               }

           }

       }

Thursday, February 2, 2012 11:26 AM by santiago Solis

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

Does anyone know if the System.IO.Packaging method still creates a [content_types].xml file inside the zip? I can't have any unwanted file(s) in my zip because of automation purposes.

Monday, March 26, 2012 2:00 PM by TimFromDallas

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

ERYERADFGASDGASDGHASD  FGBNFSDGSADADFHGAD

ADFHGZSDGASDDSFGHADS  ERYERSDGSADXZCBZX

FGBNFSDGSADADSFHGADFS  GJTRSDGSADASDGHASD

ZVXZSDGSADDFHAD  YUKYZSDGASDDSFGHADS

Monday, August 27, 2012 7:13 AM by reriAcroria

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

QWERSDGSADDSFGHADS  ASFDADFGASDGSDGASD

ZVXZSDGSADSDAFHSAD  FGBNFADFHGDAFADSFHGADFS

GJTRADFHGDAFSDGASD  ASFDSDGSADXZCBZX

YUYSDGSADSDAFHSAD  YUYADFHGDAFADFHGAD

Friday, August 31, 2012 4:19 PM by chuslyurgerse

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

FGBNFSDGSADDSFGHADS  SDGSDADFHGDAFASDFHGAD

GJTRSDGSADADFHGAD FGBNFADFHGDAFSDAFHSAD

ERYERADFHGDAFDSFGHADS ERYERSDGSADGADFHAD

SDGSDSDGSADADFHAD ASFDADFGASDGSDFH

Tuesday, September 4, 2012 6:38 PM by GafeWrofe

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

ZVXZASDGASDADFHAD  YUYADFGASDGSDFH

DSGAADFGASDGDSFGHADS  DSGASDGSADASDFHGAD

GJTRSDGSADGDFHAD  QWERADFHGDAFADSFHGADFS

SDGSDSDGSADDSFGHADS  SDGSDADFHGDAFDFHAD

Wednesday, September 5, 2012 1:14 PM by Zesemensush

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

ERYERSDGSADXZCBZX  SDGSDASDGASDASDGHASD

YUKYASDGASDDFHAD  FGBNFSDGSADASDGHASD

ADFHGSDGSADGDSFGHADS  ASFDZSDGASDDFHAD

YUYADFGASDGADSFHGADFS  ERYERZSDGASDDFHAD

Wednesday, September 5, 2012 6:36 PM by Absordreibe

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

ERYERSDGSADASDGHASD  YUKYSDGSADSDGASD

QWERSDGSADSDFH  GJTRSDGSADXZCBZX

ERYERADFGASDGSDGASD  ERYERADFHGDAFSDFH

DSGAZSDGASDSDAFHSAD  YUYZSDGASDSDFH

Thursday, September 20, 2012 6:18 AM by Blawlnard

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

Heya i’m for the first time here. I came across this board and I find It truly useful &

it helped me out a lot. I hope to give something back and

help others like you helped me.

Wednesday, October 17, 2012 11:45 AM by Grayson

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

Dunno if this has been mentioned but if you're online, you can go to <a href="www.openzipfile.com/">open zip file</a> to open zip files. It's super easy and hope that helps someone!

Tuesday, December 18, 2012 2:13 PM by Melissa Courter

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

If you're not exactly sure if you have been infected with the herpes virus, it is wise to see a medical professional as soon as possible.

Tuesday, December 18, 2012 2:18 PM by Scott Koch

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

Melasma is a very common affliction and can be addressed by using a quality skin lightening cream and moisturizer as directed.

Tuesday, December 18, 2012 2:29 PM by Skin Whitening

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

Its like you read my mind! You appear to know a lot about this, like you wrote

the book in it or something. I think that you can do with a few pics to

drive the message home a little bit, but instead of that, this is excellent blog.

A fantastic read. I'll definitely be back.

Saturday, January 5, 2013 6:01 AM by Villagomez

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

Excelente!!

Super!!

Muchas gracias!

Sunday, January 20, 2013 11:16 PM by John J. Martinez

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

t get too much direct heat during the cooking process.

The grill unfortunately is a risky place to cook meals, and also the griddle can be a great

present towards the wellbeing aware. Add the water a teaspoon at a

time so it's not over done.

Friday, February 8, 2013 5:01 AM by Metcalf

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

After 5 minutes, turn the pizza 180 degrees to insure even cooking.

You might need to dust your rolling pin with flour too, if the crust sticks to it too much while you are rolling.

Add the water a teaspoon at a time so it's not over done.

Friday, February 22, 2013 6:21 AM by Littleton

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

My family members always say that I am wasting my time here

at web, but I know I am getting experience everyday by reading

thes nice articles.

Wednesday, March 6, 2013 10:54 PM by Mcmullin

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

He especially enjoys one that is loaded with veggies.

The Big Green Egg can also be used as a slow smoker. You should have

a persistence of cooling of the pizza stone.

Saturday, March 23, 2013 12:12 AM by Tilton

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

After 5 minutes, turn the pizza 180 degrees to insure even cooking.

Cook the chicken first in a little olive oil - cut the chicken

into little cubes. It didn't help that every pizza recipe I saw online would mention the dreaded "bread machine.

Saturday, March 23, 2013 2:55 AM by Hutson

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

Quality content is the main to be a focus for the visitors to visit the web site,

that's what this web page is providing.

Wednesday, April 17, 2013 1:52 AM by Blackmon

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

Otherwise known as Chocolate Town, Hershey also provides the opportunity to get up

close and private with Santa and the reindeer while enjoying

various Christmas themed rides and activities. Very carefully lay

the sticky aspect up on the other aspect in the decal that we haven accomplished something with

to this stage and grab your scissors. Imran Khan, while seeing off

the convoy of 10 trucks carrying seeds, announced that a scheme was launched to deliver wheat seeds to each province without any discrimination

for flood-hit farmers owning 25 acres of land.

Thursday, May 2, 2013 4:09 PM by Ponder

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

These exercises aren't included in sort pattern of movements. So the sensitive information supposed to have to protect from access by others.

Thursday, May 9, 2013 4:03 PM by Yarborough

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

Another ensemble in red, white and blue incorporates a

swing dress using a matching cardigan in red and blue with white buttons.

Kate Dillon was born just outside of Washington, DC a bit over thirty

years ago but she grew up in San Diego, the land of perpetual slim.

Online broke this news early this morning on March 7.

Saturday, May 11, 2013 4:52 PM by Battles

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

Falling merely a couple of lbs weekly can certainly make botanical slimming soft gel strong version pretty obvious creates a limited stretch of time. Fast weight loss has not been your intelligent selection in regards to reducing weight; for that reason an operation may possibly botanical slimming soft gel strong version possess a spectacular outcome on our bodies and may even cause you to be develop into sick and tired because of some sort of poor nutrition.

Sunday, May 19, 2013 12:23 AM by kojwbwez@aol.com

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

Since 1961, the Homeland music.Association has gone honoring the very best

in country music. Insane Clown Posse hails from Detroit, which

is not one of these methods.

Monday, May 20, 2013 10:31 PM by Mcdonnell

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

This software can be introduced to computers via the Internet.

Ultimate keylogger has a unique capability to capture both sides of a coin, this program

has its dark side too. Monitor does not involve a steep learning curve, does not require eyecandy, and Soft

Activity obviously realizes this. Passwords using ardamax Keylogger.

Anytime, there are still some clues that can help you to narrow your choices.

10 to $25 The price for credit card information. With computer spy monitor software helps you to find

out what their online activity could be crucial.

Wednesday, May 22, 2013 11:29 AM by Staples

# re: Creating Zip archives in .NET (without an external library like SharpZipLib)

Personal media is the exact latest buzz on the internet.

Unfortunately just recognizing additionally praising employees is just not enough.

Friday, May 24, 2013 10:01 AM by Palma