This is non-trivial, but at some point in the past I looked into compressing and decompressing programmatically using C#:
I've hosted the source code on GitHub demonstrating using .NET to compress a folder and its contents into a single .zip archive. It also demonstrates decompressing such an archive into its component directory, subdirectories, and files.
And here are a couple libraries you'll need to use:
/r:System.IO.Compression.dll
/r:System.IO.Compression.FileSystem.dll