snipt

Ctrl+h for KB shortcuts

C#

Unzip using WindowsShell

/*
Add reference under COM tab first: Microsoft Shell Controls and Automation
This Shell32.dll can be embedded into program in .NET 4 by setting Embed Interop Types to True.
*/

public static void UnZip(string zipFile, string destFolder)
{
    if (Directory.Exists(destFolder))
        Directory.Delete(destFolder,true);
    Directory.CreateDirectory(destFolder);
    Shell32.Shell sc = new Shell32.Shell();
    Shell32.Folder SrcFile = sc.NameSpace(zipFile);
    Shell32.Folder DestFolder = sc.NameSpace(destFolder);
    Shell32.FolderItems items = SrcFile.Items();
    DestFolder.CopyHere(items, 20);
}

/*
CopyHere method cannot create folder by itself, so we must create destFolder separately.
The 20 in CopyHere(items, 20) is a kind of intOptions flags (4|16), 4 means donot show copying progress bar, 16 means "yes to all" of override decision.
For about this method please go to http://msdn.microsoft.com/en-us/library/ms723207.aspx
*/
https://snipt.net/embed/8fc704939fa714a6745dd03d4809d871/
/raw/8fc704939fa714a6745dd03d4809d871/
8fc704939fa714a6745dd03d4809d871
csharp
C#
22
2019-06-27T08:47:31
True
False
False
/api/public/snipt/37586/
unzip-using-windowsshell
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><a href="#L-1"> 1</a> <a href="#L-2"> 2</a> <a href="#L-3"> 3</a> <a href="#L-4"> 4</a> <a href="#L-5"> 5</a> <a href="#L-6"> 6</a> <a href="#L-7"> 7</a> <a href="#L-8"> 8</a> <a href="#L-9"> 9</a> <a href="#L-10">10</a> <a href="#L-11">11</a> <a href="#L-12">12</a> <a href="#L-13">13</a> <a href="#L-14">14</a> <a href="#L-15">15</a> <a href="#L-16">16</a> <a href="#L-17">17</a> <a href="#L-18">18</a> <a href="#L-19">19</a> <a href="#L-20">20</a> <a href="#L-21">21</a> <a href="#L-22">22</a></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span id="L-1"><a name="L-1"></a><span class="cm">/*</span> </span><span id="L-2"><a name="L-2"></a><span class="cm">Add reference under COM tab first: Microsoft Shell Controls and Automation</span> </span><span id="L-3"><a name="L-3"></a><span class="cm">This Shell32.dll can be embedded into program in .NET 4 by setting Embed Interop Types to True.</span> </span><span id="L-4"><a name="L-4"></a><span class="cm">*/</span> </span><span id="L-5"><a name="L-5"></a> </span><span id="L-6"><a name="L-6"></a><span class="k">public</span> <span class="k">static</span> <span class="k">void</span> <span class="nf">UnZip</span><span class="p">(</span><span class="kt">string</span> <span class="n">zipFile</span><span class="p">,</span> <span class="kt">string</span> <span class="n">destFolder</span><span class="p">)</span> </span><span id="L-7"><a name="L-7"></a><span class="p">{</span> </span><span id="L-8"><a name="L-8"></a> <span class="k">if</span> <span class="p">(</span><span class="n">Directory</span><span class="p">.</span><span class="n">Exists</span><span class="p">(</span><span class="n">destFolder</span><span class="p">))</span> </span><span id="L-9"><a name="L-9"></a> <span class="n">Directory</span><span class="p">.</span><span class="n">Delete</span><span class="p">(</span><span class="n">destFolder</span><span class="p">,</span><span class="k">true</span><span class="p">);</span> </span><span id="L-10"><a name="L-10"></a> <span class="n">Directory</span><span class="p">.</span><span class="n">CreateDirectory</span><span class="p">(</span><span class="n">destFolder</span><span class="p">);</span> </span><span id="L-11"><a name="L-11"></a> <span class="n">Shell32</span><span class="p">.</span><span class="n">Shell</span> <span class="n">sc</span> <span class="p">=</span> <span class="k">new</span> <span class="n">Shell32</span><span class="p">.</span><span class="n">Shell</span><span class="p">();</span> </span><span id="L-12"><a name="L-12"></a> <span class="n">Shell32</span><span class="p">.</span><span class="n">Folder</span> <span class="n">SrcFile</span> <span class="p">=</span> <span class="n">sc</span><span class="p">.</span><span class="n">NameSpace</span><span class="p">(</span><span class="n">zipFile</span><span class="p">);</span> </span><span id="L-13"><a name="L-13"></a> <span class="n">Shell32</span><span class="p">.</span><span class="n">Folder</span> <span class="n">DestFolder</span> <span class="p">=</span> <span class="n">sc</span><span class="p">.</span><span class="n">NameSpace</span><span class="p">(</span><span class="n">destFolder</span><span class="p">);</span> </span><span id="L-14"><a name="L-14"></a> <span class="n">Shell32</span><span class="p">.</span><span class="n">FolderItems</span> <span class="n">items</span> <span class="p">=</span> <span class="n">SrcFile</span><span class="p">.</span><span class="n">Items</span><span class="p">();</span> </span><span id="L-15"><a name="L-15"></a> <span class="n">DestFolder</span><span class="p">.</span><span class="n">CopyHere</span><span class="p">(</span><span class="n">items</span><span class="p">,</span> <span class="m">20</span><span class="p">);</span> </span><span id="L-16"><a name="L-16"></a><span class="p">}</span> </span><span id="L-17"><a name="L-17"></a> </span><span id="L-18"><a name="L-18"></a><span class="cm">/*</span> </span><span id="L-19"><a name="L-19"></a><span class="cm">CopyHere method cannot create folder by itself, so we must create destFolder separately.</span> </span><span id="L-20"><a name="L-20"></a><span class="cm">The 20 in CopyHere(items, 20) is a kind of intOptions flags (4|16), 4 means donot show copying progress bar, 16 means &quot;yes to all&quot; of override decision.</span> </span><span id="L-21"><a name="L-21"></a><span class="cm">For about this method please go to http://msdn.microsoft.com/en-us/library/ms723207.aspx</span> </span><span id="L-22"><a name="L-22"></a><span class="cm">*/</span> </span></pre></div> </td></tr></table>
filesystem, shell