2011-11-03 119 views
5

Necesito usar 7zip en C#. Sin consola, solo con 7zSharp.dll? + Encuentro algunos datos aquíextraer 7zip en C# code

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

pero no sé cómo usarlo (- podría crear .bat (cmd) archivo, pero necesito el archivo DLL de todo el edificio) Exactamente: Necesito extraer el archivo .7z con la clave)

+0

ha intentado ya [DotNetZip] (http://dotnetzip.codeplex.com/)? – Oliver

+1

¿Eso es compatible con 7z? – CodesInChaos

+0

http://dotnetzip.codeplex.com/workitem/14034 –

Respuesta

0

No parece que esta biblioteca admita archivos encriptados. Ningún método toma una llave como parámetro.

+0

... ¿y cómo puedo extraer el archivo .7z con la clave? –

+0

no con esta lib ... Podrías usar System.Diagnostics para comenzar un proceso de consola, pero ya que no quieres hacerlo ... Comienza a leer el SDK :) –

0

La biblioteca 7zSharp no parece admitir la contraseña como entrada, solo un archivo zip.

La biblioteca simplemente llama al .exe de 7zip, por lo que podría descargar la fuente y modificarla para aceptar un parámetro de contraseña que luego pasará al ejecutable.

+1

Sí, eso es genial, simplemente expliqué cómo podrías hacer eso. No voy a escribir el código para ti. – CodeCaster

+0

¡No necesito tu código! ¡Yo puedo hacer eso! ¡Gracias por la ayuda! –

3

Los autores de 7zip proporcionan el LZMA SDK y una buena documentación que debería poder lograr lo que usted desea. El SDK incluye código C# capaz de compresión/descompresión.

Otra opción sería utilizar algo así como un C# (.NET) Interface for 7-Zip Archive DLLs

ACTUALIZACIÓN: Otro usuario hizo una pregunta similar aquí: How do I create 7-Zip archives with .NET? La respuesta tiene varios de los mismos enlaces que proporcionan y unos cuantos más.

5

Descargue el standalone console version from 7zip.com y agréguelo a su proyecto.

Usted necesita los 3 archivos añadidos en el proyecto:

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

No olvides decir Copiar a la salida Directorio en sus preferencias.

extraer un archivo:

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 
     } 
    } 

crear un archivo:

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