Buenas noches amigos, eh estado trabajando con la libreria SevenZip y me ah resultado tremenda, cree mi proyecto para probar el codigo aparte y me funciono de maravilla pero a la hora de aplicarlo a mi codigo base me da un error que no le encuentro razon de ser y me gustaria otras opiniones.
Este es el codigo de mi proyecto independiente.
Aclaro ambos funcionan de manera exitosa y pueden probarlo.
este es el codigo de mi proyecto base.
como se podran fijar la unica diferencia es el cambio de direccion en la parte de salida del archivo.
El error del codigo 2 es: "acceso denegado a la ruta de acceso 'C:\'.' en realidad a la ruta que le ponga da ese error y no enteindo ni se por que, espero pueda alguien ayudarme.
PD. Despues de buscar solucion ahora me envia el archivo a el lugar que quiera pero sin nombre alguno y eso asigno un nombre.
Este es el codigo de mi proyecto independiente.
Código (csharp) [Seleccionar]
public void sevenZipCompresorD()
{
System.Threading.Tasks.Task.Run(() =>
{
System.Windows.Forms.FolderBrowserDialog ofd = new System.Windows.Forms.FolderBrowserDialog();
ofd.Description = "Seleccione la carpeta a comprimir";
ofd.RootFolder = Environment.SpecialFolder.Desktop;
Dispatcher.Invoke(() =>
{
if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
string folderToZip = ofd.SelectedPath;
System.Threading.Tasks.Task.Run(() =>
{
var tmp = new SevenZipCompressor();
tmp.ArchiveFormat = OutArchiveFormat.SevenZip;
tmp.CompressionMethod = CompressionMethod.Lzma;
tmp.CompressionLevel = CompressionLevel.Ultra;
tmp.FileCompressionStarted += (s, e) =>
{
Dispatcher.Invoke(() => lblPorcentage.Content = (String.Format("Comprimiendo... [{0}%] {1}",
e.PercentDone, e.FileName)));
};
tmp.CompressionFinished += (s, e) => { Dispatcher.Invoke(() => lblPorcentage.Content = ("Finished!")); };
tmp.CompressDirectory(folderToZip, @"test.7z");
});
}
});
});
}
private void SevenZipCompresorA()
{
System.Threading.Tasks.Task.Run(() =>
{
Microsoft.Win32.OpenFileDialog ofd = new Microsoft.Win32.OpenFileDialog();
ofd.Title = "Archivos a Comprimir";
ofd.Filter = "Archivos a Comprimir|*.*";
ofd.Multiselect = true;
if ((ofd.ShowDialog() == true))
{
//StreamWriter sw = new StreamWriter("listfile.lst");
//foreach (string n in ofd.FileNames)
//{
// sw.WriteLine(n);
//}
//sw.Close();
System.Threading.Tasks.Task.Run(() =>
{
var tmp = new SevenZipCompressor();
tmp.ArchiveFormat = OutArchiveFormat.SevenZip;
tmp.CompressionMethod = CompressionMethod.Lzma;
tmp.CompressionLevel = CompressionLevel.Ultra;
tmp.FileCompressionStarted += (s, e) =>
{
Dispatcher.Invoke(() => lblPorcentage.Content = (String.Format("Comprimiendo... [{0}%] {1}",
e.PercentDone, e.FileName)));
};
tmp.CompressionFinished += (s, e) => { Dispatcher.Invoke(() => lblPorcentage.Content = ("Finished!")); };
tmp.CompressFiles(@"test.7z", ofd.FileName);
});
}
});
}
Aclaro ambos funcionan de manera exitosa y pueden probarlo.
este es el codigo de mi proyecto base.
Código (csharp) [Seleccionar]
public void metodoDirectorio()
{
SpeechSynthesizer habla = new SpeechSynthesizer();
AvisoVisual aviso = new AvisoVisual();
aviso.Top = 1;
aviso.Left = 600;
aviso.Visibility = Visibility.Visible;
System.Threading.Tasks.Task.Run(() =>
{
System.Windows.Forms.FolderBrowserDialog ofd = new System.Windows.Forms.FolderBrowserDialog();
ofd.Description = "Seleccione la carpeta a comprimir";
ofd.RootFolder = Environment.SpecialFolder.Desktop;
Dispatcher.Invoke(() =>
{
if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
string folderToZip = ofd.SelectedPath;
System.Threading.Tasks.Task.Run(() =>
{
var tmp = new SevenZipCompressor();
tmp.ArchiveFormat = OutArchiveFormat.SevenZip;
tmp.CompressionMethod = CompressionMethod.Lzma;
tmp.CompressionLevel = CompressionLevel.Ultra;
tmp.FileCompressionStarted += (s, e) =>
{
Dispatcher.Invoke(() => aviso.Content = (String.Format("Comprimiendo... [{0}%] {1}",
e.PercentDone, e.FileName)));
};
tmp.CompressionFinished += (s, e) => Dispatcher.Invoke(() => aviso.Close());
tmp.CompressDirectory(folderToZip, File.Create(Settings.Default.directorioComprimidos));
});
}
else
{
aviso.Close();
}
});
});
}
public void metodoArchivo()
{
AvisoVisual aviso = new AvisoVisual();
aviso.Top = 1;
aviso.Left = 600;
aviso.Visibility = Visibility.Visible;
System.Threading.Tasks.Task.Run(() =>
{
Microsoft.Win32.OpenFileDialog ofd = new Microsoft.Win32.OpenFileDialog();
ofd.Title = "Archivos a Comprimir";
ofd.Filter = "Archivos a Comprimir|*.*";
ofd.Multiselect = true;
if ((ofd.ShowDialog() == true))
{
System.Threading.Tasks.Task.Run(() =>
{
var tmp = new SevenZipCompressor();
tmp.ArchiveFormat = OutArchiveFormat.SevenZip;
tmp.CompressionMethod = CompressionMethod.Lzma;
tmp.CompressionLevel = CompressionLevel.Ultra;
tmp.FileCompressionStarted += (s, e) =>
{
Dispatcher.Invoke(() => aviso.Content = (String.Format("Comprimiendo... [{0}%] {1}",
e.PercentDone, e.FileName)));
};
tmp.CompressionFinished += (s, e) => { Dispatcher.Invoke(() => aviso.Close()); };
tmp.CompressFiles(Settings.Default.directorioComprimidos, ofd.FileName);
});
}
else
{
Dispatcher.Invoke(() => aviso.Close());
}
});
}
como se podran fijar la unica diferencia es el cambio de direccion en la parte de salida del archivo.
El error del codigo 2 es: "acceso denegado a la ruta de acceso 'C:\'.' en realidad a la ruta que le ponga da ese error y no enteindo ni se por que, espero pueda alguien ayudarme.
PD. Despues de buscar solucion ahora me envia el archivo a el lugar que quiera pero sin nombre alguno y eso asigno un nombre.