views:

823

answers:

3

I need to programaticaly unpack a zip archive to folder on Windows Mobile. Is there an easy to use API that I can use directly or should I go with some external library?

A: 

If you're using .Net Compact Framework you could go with http://www.icsharpcode.net/OpenSource/SharpZipLib. I believe it supports running on CF.

Peter Lillevold
+5  A: 

You need an external library. There is a zlibce.dll, a native DLL that you can use if C++ is your thang.

If .NET is your thing then I can recommend DotNetZip, which runs on the .NETCF 2.0, is free, open source, and has good doc, good performance. In the DotNetZip source distrib, there's a CF-Unzipper project that you can view and compile; it demonstrates how to unzip files on the device. Here's a link where you can view the code for the device app.

This is a snip of the zip-relevant parts of the code. It unzips to a directory that takes its name from the zip file (without the .zip extension).

    private void UnzipSelectedFile()
    {
        string parent = System.IO.Path.GetDirectoryName(_selectedpath);
        string dir = System.IO.Path.Combine(parent,
            System.IO.Path.GetFileNameWithoutExtension(_selectedpath));
        try
        {
            using (var zip1 = new Ionic.Zip.ZipFile(_selectedpath))
            {
                foreach (var entry in zip1)
                {
                    entry.Extract(dir, true);
                }
            }

            // re-populate the treeview with the extracted files:
            AddChildren(tvFolders.SelectedNode.Parent);

        }
        catch (Exception ex)
        {
            MessageBox.Show("Exception! " + ex);
        }
    }

Here's a link to an online version of the doc for the library.

Cheeso
A: 

Regardless of what language you use you can use Info-ZIP as an external executable.

sharptooth