extract 7zip in C# code
Asked Answered
B

5

10

I need use 7zip in C#. Without console, just with 7zSharp.dll ? + I find some data here

http://7zsharp.codeplex.com/releases/view/10305 ,

but I don't know how to use it( - I could create .bat(.cmd) file, but I need throught dll file) Exactly: I need extract .7z file with key)

Bremser answered 3/11, 2011 at 12:0 Comment(2)
Have you already tried DotNetZip?Octillion
dotnetzip.codeplex.com/workitem/14034Bremser
G
21

Download the standalone console version from 7zip.com and add it to your project.

You need those 3 Files added in the project:

  1. 7za.exe
  2. 7za.dll
  3. 7zxa.dll

Don't forget to say Copy to Output Directory in it's preferences.

Extract an archive:

public void ExtractFile(string sourceArchive, string destination)
    {
        string zPath = "7za.exe"; //add to proj and set CopyToOuputDir
        try
        {
            ProcessStartInfo pro = new ProcessStartInfo();
            pro.WindowStyle = ProcessWindowStyle.Hidden;
            pro.FileName = zPath;
            pro.Arguments = string.Format("x \"{0}\" -y -o\"{1}\"", sourceArchive, destination);
            Process x = Process.Start(pro);
            x.WaitForExit();
        }
        catch (System.Exception Ex) {
            //handle error
        }
    }

Create an archive:

public void CreateZip(string sourceName, string targetArchive)
{
    ProcessStartInfo p = new ProcessStartInfo();
    p.FileName = "7za.exe";
    p.Arguments = string.Format("a -tgzip \"{0}\" \"{1}\" -mx=9", targetArchive, sourceName);
    p.WindowStyle = ProcessWindowStyle.Hidden;
    Process x = Process.Start(p);
    x.WaitForExit();
}
Gentlefolk answered 11/9, 2014 at 11:58 Comment(4)
Hi, how to include the password in the Arguments to create zipped and extract zipped with the solution above?Enoch
@Enoch the argument for passwords is "-p" so it's -pMySuperS3cr3tPasswordLeathers
In order for ProcessWindowStyle to work, you also need to have UseShellExecute set to trueWiddershins
Note that Process implements IDisposable, so don't forget to wrap those last two lines into a using statementSensational
C
7

The authors of 7zip provide the LZMA SDK and good documentation which should be able to achieve what you want. The SDK includes C# code capable of compression / decompression.

Another option would be to use a something like C# (.NET) Interface for 7-Zip Archive DLLs

UPDATE: Another user asked a similar question here: How do I create 7-Zip archives with .NET? The answer has several of the same links I provided and a few more.

Christo answered 3/11, 2011 at 12:17 Comment(1)
Note that the .NET LZMA SDK code does not provide for streaming compression and decompression, so working with large files without writing them to disk is very difficult. The main function is basically something like this: void Code(Stream in, Stream out). Reading a compressed file and processing it as you would require writing a Stream class that did the processing as the writes came in. Wrapper streams like new Decompressingwrapper(compressedInput) and `new CompressingWrapper(decompressedInput) would make it MUCH easier to use in most scenarios.Rosierosily
A
1

Aspose.ZIP can be used to extract zip files with ease. Download it via NuGet package manager.

PM> Install-Package Aspose.Zip

The following code shows how to open or extract 7z file programmatically using C#:

using (SevenZipArchive archive = new SevenZipArchive("Sample.7z"))
{
    archive.ExtractToDirectory(dataDir + "Sample_ExtractionFolder");
}

The code below explains how to extract or unzip a password protected 7zip file programmatically using C#:

using (SevenZipArchive archive = new SevenZipArchive("Sample_Encrypted.7z"))
{
    archive.ExtractToDirectory("Sample_Encrypted7zip", "password");
}

Credit to Farhan Raza's blog post: https://blog.aspose.com/2021/04/28/open-extract-7zip-7z-file-unzip-in-csharp-asp-net/

Accordion answered 4/7, 2022 at 9:21 Comment(0)
C
0

It doesn't look like this library supports encrypted files. No method takes a key as a parameter.

Claustrophobia answered 3/11, 2011 at 12:5 Comment(2)
...and how I can extract .7z file with key?Bremser
not with this lib... You could just use System.Diagnostics to start a console process, but seeing as you don't want to do that... Start reading the SDK :)Nonagon
C
0

The 7zSharp library doesn't seem to support password as input, just a zip file.

The library just calls the .exe of 7zip, so you could donwload the source and alter it to accept a password parameter which you then pass to the executable.

Clinical answered 3/11, 2011 at 12:8 Comment(1)
Yeah that's great, I just explained how you could do that. I'm not gonna write the code for you.Clinical

© 2022 - 2024 — McMap. All rights reserved.