koder_mooder
koder_mooder

Reputation: 134

extract 7zip in C# code

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)

Upvotes: 10

Views: 46253

Answers (5)

Péter Szilvási
Péter Szilvási

Reputation: 2101

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/

Upvotes: 1

Vishal Sen
Vishal Sen

Reputation: 1175

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();
}

Upvotes: 21

robowahoo
robowahoo

Reputation: 1279

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.

Upvotes: 8

CodeCaster
CodeCaster

Reputation: 151730

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.

Upvotes: 0

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

Upvotes: 0

Related Questions